mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-07 08:57:19 +08:00
306 lines
2.3 MiB
306 lines
2.3 MiB
var fM=Object.defineProperty,AM=Object.defineProperties;var _M=Object.getOwnPropertyDescriptors;var tV=Object.getOwnPropertySymbols,qM=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,Mb=Object.prototype.propertyIsEnumerable,$M=Reflect.get;var Cs=(d,l)=>(l=Symbol[d])?l:Symbol.for("Symbol."+d);var jF=Math.pow,mb=(d,l,U)=>l in d?fM(d,l,{enumerable:!0,configurable:!0,writable:!0,value:U}):d[l]=U,Nl=(d,l)=>{for(var U in l||(l={}))eb.call(l,U)&&mb(d,U,l[U]);if(tV)for(var U of tV(l))Mb.call(l,U)&&mb(d,U,l[U]);return d},jU=(d,l)=>AM(d,_M(l));var Jb=(d,l)=>{var U={};for(var Z in d)eb.call(d,Z)&&l.indexOf(Z)<0&&(U[Z]=d[Z]);if(d!=null&&tV)for(var Z of tV(d))l.indexOf(Z)<0&&Mb.call(d,Z)&&(U[Z]=d[Z]);return U};var Gb=(d,l,U)=>$M(qM(d),U,l);var D=(d,l,U)=>new Promise((Z,F)=>{var t=Q=>{try{W(U.next(Q))}catch(a){F(a)}},c=Q=>{try{W(U.throw(Q))}catch(a){F(a)}},W=Q=>Q.done?Z(Q.value):Promise.resolve(Q.value).then(t,c);W((U=U.apply(d,l)).next())}),cV=function(d,l){this[0]=d,this[1]=l},xs=(d,l,U)=>{var Z=(c,W,Q,a)=>{try{var n=U[c](W),s=(W=n.value)instanceof cV,R=n.done;Promise.resolve(s?W[0]:W).then(N=>s?Z(c==="return"?c:"next",W[1]?{done:N.done,value:N.value}:N,Q,a):Q({value:N,done:R})).catch(N=>Z("throw",N,Q,a))}catch(N){a(N)}},F=c=>t[c]=W=>new Promise((Q,a)=>Z(c,W,Q,a)),t={};return U=U.apply(d,l),t[Cs("asyncIterator")]=()=>t,F("next"),F("throw"),F("return"),t};var Tb=(d,l,U)=>(l=d[Cs("asyncIterator")])?l.call(d):(d=d[Cs("iterator")](),l={},U=(Z,F)=>(F=d[Z])&&(l[Z]=t=>new Promise((c,W,Q)=>(t=F.call(d,t),Q=t.done,Promise.resolve(t.value).then(a=>c({value:a,done:Q}),W)))),U("next"),U("return"),l);import{M as In,N as lJ,O as Sb,n as nR,z as Be,d as ue,a as _Z,P as UJ,p as dJ,f as kd,k as NZ,F as ZJ,l as FJ,Q as Xb,g as NW,j as Yb,s as tJ,R as cJ,b as WJ,w as DZ,e as OF,A as pb,i as gd,h as WV,B as rs,t as js,u as Bb}from"./index-yvJsfBgz.js";var VJ=Object.defineProperty,QJ=(d,l,U)=>l in d?VJ(d,l,{enumerable:!0,configurable:!0,writable:!0,value:U}):d[l]=U,f=(d,l,U)=>(QJ(d,typeof l!="symbol"?l+"":l,U),U),Fb=(d,l,U)=>{if(!l.has(d))throw TypeError("Cannot "+U)},V=(d,l,U)=>(Fb(d,l,"read from private field"),U?U.call(d):l.get(d)),i=(d,l,U)=>{if(l.has(d))throw TypeError("Cannot add the same private member more than once");l instanceof WeakSet?l.add(d):l.set(d,U)},m=(d,l,U,Z)=>(Fb(d,l,"write to private field"),l.set(d,U),U),bU=(d,l,U,Z)=>({set _(F){m(d,l,F)},get _(){return V(d,l,Z)}}),b=(d,l,U)=>(Fb(d,l,"access private method"),U),aJ={9306:(d,l,U)=>{var Z=U(4901),F=U(6823),t=TypeError;d.exports=function(c){if(Z(c))return c;throw new t(F(c)+" is not a function")}},3506:(d,l,U)=>{var Z=U(3925),F=String,t=TypeError;d.exports=function(c){if(Z(c))return c;throw new t("Can't set "+F(c)+" as a prototype")}},7080:(d,l,U)=>{var Z=U(4402).has;d.exports=function(F){return Z(F),F}},679:(d,l,U)=>{var Z=U(1625),F=TypeError;d.exports=function(t,c){if(Z(c,t))return t;throw new F("Incorrect invocation")}},8551:(d,l,U)=>{var Z=U(34),F=String,t=TypeError;d.exports=function(c){if(Z(c))return c;throw new t(F(c)+" is not an object")}},7811:d=>{d.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(d,l,U)=>{var Z=U(6706),F=U(4576),t=TypeError;d.exports=Z(ArrayBuffer.prototype,"byteLength","get")||function(c){if(F(c)!=="ArrayBuffer")throw new t("ArrayBuffer expected");return c.byteLength}},3238:(d,l,U)=>{var Z=U(9504),F=U(7394),t=Z(ArrayBuffer.prototype.slice);d.exports=function(c){if(F(c)!==0)return!1;try{return t(c,0,0),!1}catch(W){return!0}}},5636:(d,l,U)=>{var Z=U(4475),F=U(9504),t=U(6706),c=U(7696),W=U(3238),Q=U(7394),a=U(4483),n=U(1548),s=Z.structuredClone,R=Z.ArrayBuffer,N=Z.DataView,h=Z.TypeError,e=Math.min,M=R.prototype,J=N.prototype,T=F(M.slice),G=t(M,"resizable","get"),Y=t(M,"maxByteLength","get"),S=F(J.getInt8),X=F(J.setInt8);d.exports=(n||a)&&function(B,k,p){var o=Q(B),y=k===void 0?o:c(k),I=!G||!G(B),E;if(W(B))throw new h("ArrayBuffer is detached");if(n&&(B=s(B,{transfer:[B]}),o===y&&(p||I)))return B;if(o>=y&&(!p||I))E=T(B,0,y);else{var O=p&&!I&&Y?{maxByteLength:Y(B)}:void 0;E=new R(y,O);for(var r=new N(B),u=new N(E),w=e(y,o),_=0;_<w;_++)X(u,_,S(r,_))}return n||a(B),E}},4644:(d,l,U)=>{var Z=U(7811),F=U(3724),t=U(4475),c=U(4901),W=U(34),Q=U(9297),a=U(6955),n=U(6823),s=U(6699),R=U(6840),N=U(2106),h=U(1625),e=U(2787),M=U(2967),J=U(8227),T=U(3392),G=U(1181),Y=G.enforce,S=G.get,X=t.Int8Array,B=X&&X.prototype,k=t.Uint8ClampedArray,p=k&&k.prototype,o=X&&e(X),y=B&&e(B),I=Object.prototype,E=t.TypeError,O=J("toStringTag"),r=T("TYPED_ARRAY_TAG"),u="TypedArrayConstructor",w=Z&&!!M&&a(t.opera)!=="Opera",_=!1,Ql,Ml,FU,cl={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},al={BigInt64Array:8,BigUint64Array:8},Od=function(K){if(!W(K))return!1;var nl=a(K);return nl==="DataView"||Q(cl,nl)||Q(al,nl)},Vd=function(K){var nl=e(K);if(W(nl)){var Xl=S(nl);return Xl&&Q(Xl,u)?Xl[u]:Vd(nl)}},x=function(K){if(!W(K))return!1;var nl=a(K);return Q(cl,nl)||Q(al,nl)},L=function(K){if(x(K))return K;throw new E("Target is not a typed array")},C=function(K){if(c(K)&&(!M||h(o,K)))return K;throw new E(n(K)+" is not a typed array constructor")},v=function(K,nl,Xl,rU){if(F){if(Xl)for(var ql in cl){var Yl=t[ql];if(Yl&&Q(Yl.prototype,K))try{delete Yl.prototype[K]}catch(rF){try{Yl.prototype[K]=nl}catch(ws){}}}(!y[K]||Xl)&&R(y,K,Xl?nl:w&&B[K]||nl,rU)}},Zl=function(K,nl,Xl){var rU,ql;if(F){if(M){if(Xl){for(rU in cl)if(ql=t[rU],ql&&Q(ql,K))try{delete ql[K]}catch(Yl){}}if(!o[K]||Xl)try{return R(o,K,Xl?nl:w&&o[K]||nl)}catch(Yl){}else return}for(rU in cl)ql=t[rU],ql&&(!ql[K]||Xl)&&R(ql,K,nl)}};for(Ql in cl)Ml=t[Ql],FU=Ml&&Ml.prototype,FU?Y(FU)[u]=Ml:w=!1;for(Ql in al)Ml=t[Ql],FU=Ml&&Ml.prototype,FU&&(Y(FU)[u]=Ml);if((!w||!c(o)||o===Function.prototype)&&(o=function(){throw new E("Incorrect invocation")},w))for(Ql in cl)t[Ql]&&M(t[Ql],o);if((!w||!y||y===I)&&(y=o.prototype,w))for(Ql in cl)t[Ql]&&M(t[Ql].prototype,y);if(w&&e(p)!==y&&M(p,y),F&&!Q(y,O)){_=!0,N(y,O,{configurable:!0,get:function(){return W(this)?this[r]:void 0}});for(Ql in cl)t[Ql]&&s(t[Ql],r,Ql)}d.exports={NATIVE_ARRAY_BUFFER_VIEWS:w,TYPED_ARRAY_TAG:_&&r,aTypedArray:L,aTypedArrayConstructor:C,exportTypedArrayMethod:v,exportTypedArrayStaticMethod:Zl,getTypedArrayConstructor:Vd,isView:Od,isTypedArray:x,TypedArray:o,TypedArrayPrototype:y}},5370:(d,l,U)=>{var Z=U(6198);d.exports=function(F,t,c){for(var W=0,Q=arguments.length>2?c:Z(t),a=new F(Q);Q>W;)a[W]=t[W++];return a}},9617:(d,l,U)=>{var Z=U(5397),F=U(5610),t=U(6198),c=function(W){return function(Q,a,n){var s=Z(Q),R=t(s);if(R===0)return!W&&-1;var N=F(n,R),h;if(W&&a!==a){for(;R>N;)if(h=s[N++],h!==h)return!0}else for(;R>N;N++)if((W||N in s)&&s[N]===a)return W||N||0;return!W&&-1}};d.exports={includes:c(!0),indexOf:c(!1)}},4527:(d,l,U)=>{var Z=U(3724),F=U(4376),t=TypeError,c=Object.getOwnPropertyDescriptor,W=Z&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(Q){return Q instanceof TypeError}}();d.exports=W?function(Q,a){if(F(Q)&&!c(Q,"length").writable)throw new t("Cannot set read only .length");return Q.length=a}:function(Q,a){return Q.length=a}},7628:(d,l,U)=>{var Z=U(6198);d.exports=function(F,t){for(var c=Z(F),W=new t(c),Q=0;Q<c;Q++)W[Q]=F[c-Q-1];return W}},9928:(d,l,U)=>{var Z=U(6198),F=U(1291),t=RangeError;d.exports=function(c,W,Q,a){var n=Z(c),s=F(Q),R=s<0?n+s:s;if(R>=n||R<0)throw new t("Incorrect index");for(var N=new W(n),h=0;h<n;h++)N[h]=h===R?a:c[h];return N}},6319:(d,l,U)=>{var Z=U(8551),F=U(9539);d.exports=function(t,c,W,Q){try{return Q?c(Z(W)[0],W[1]):c(W)}catch(a){F(t,"throw",a)}}},4576:(d,l,U)=>{var Z=U(9504),F=Z({}.toString),t=Z("".slice);d.exports=function(c){return t(F(c),8,-1)}},6955:(d,l,U)=>{var Z=U(2140),F=U(4901),t=U(4576),c=U(8227),W=c("toStringTag"),Q=Object,a=t(function(){return arguments}())==="Arguments",n=function(s,R){try{return s[R]}catch(N){}};d.exports=Z?t:function(s){var R,N,h;return s===void 0?"Undefined":s===null?"Null":typeof(N=n(R=Q(s),W))=="string"?N:a?t(R):(h=t(R))==="Object"&&F(R.callee)?"Arguments":h}},7740:(d,l,U)=>{var Z=U(9297),F=U(5031),t=U(7347),c=U(4913);d.exports=function(W,Q,a){for(var n=F(Q),s=c.f,R=t.f,N=0;N<n.length;N++){var h=n[N];!Z(W,h)&&!(a&&Z(a,h))&&s(W,h,R(Q,h))}}},2211:(d,l,U)=>{var Z=U(9039);d.exports=!Z(function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype})},2529:d=>{d.exports=function(l,U){return{value:l,done:U}}},6699:(d,l,U)=>{var Z=U(3724),F=U(4913),t=U(6980);d.exports=Z?function(c,W,Q){return F.f(c,W,t(1,Q))}:function(c,W,Q){return c[W]=Q,c}},6980:d=>{d.exports=function(l,U){return{enumerable:!(l&1),configurable:!(l&2),writable:!(l&4),value:U}}},4659:(d,l,U)=>{var Z=U(3724),F=U(4913),t=U(6980);d.exports=function(c,W,Q){Z?F.f(c,W,t(0,Q)):c[W]=Q}},2106:(d,l,U)=>{var Z=U(283),F=U(4913);d.exports=function(t,c,W){return W.get&&Z(W.get,c,{getter:!0}),W.set&&Z(W.set,c,{setter:!0}),F.f(t,c,W)}},6840:(d,l,U)=>{var Z=U(4901),F=U(4913),t=U(283),c=U(9433);d.exports=function(W,Q,a,n){n||(n={});var s=n.enumerable,R=n.name!==void 0?n.name:Q;if(Z(a)&&t(a,R,n),n.global)s?W[Q]=a:c(Q,a);else{try{n.unsafe?W[Q]&&(s=!0):delete W[Q]}catch(N){}s?W[Q]=a:F.f(W,Q,{value:a,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return W}},6279:(d,l,U)=>{var Z=U(6840);d.exports=function(F,t,c){for(var W in t)Z(F,W,t[W],c);return F}},9433:(d,l,U)=>{var Z=U(4475),F=Object.defineProperty;d.exports=function(t,c){try{F(Z,t,{value:c,configurable:!0,writable:!0})}catch(W){Z[t]=c}return c}},3724:(d,l,U)=>{var Z=U(9039);d.exports=!Z(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})},4483:(d,l,U)=>{var Z=U(4475),F=U(9714),t=U(1548),c=Z.structuredClone,W=Z.ArrayBuffer,Q=Z.MessageChannel,a=!1,n,s,R,N;if(t)a=function(h){c(h,{transfer:[h]})};else if(W)try{Q||(n=F("worker_threads"),n&&(Q=n.MessageChannel)),Q&&(s=new Q,R=new W(2),N=function(h){s.port1.postMessage(null,[h])},R.byteLength===2&&(N(R),R.byteLength===0&&(a=N)))}catch(h){}d.exports=a},4055:(d,l,U)=>{var Z=U(4475),F=U(34),t=Z.document,c=F(t)&&F(t.createElement);d.exports=function(W){return c?t.createElement(W):{}}},6837:d=>{var l=TypeError,U=9007199254740991;d.exports=function(Z){if(Z>U)throw l("Maximum allowed index exceeded");return Z}},5002:d=>{d.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:(d,l,U)=>{var Z=U(516),F=U(9088);d.exports=!Z&&!F&&typeof window=="object"&&typeof document=="object"},516:d=>{d.exports=typeof Deno=="object"&&Deno&&typeof Deno.version=="object"},9088:(d,l,U)=>{var Z=U(4475),F=U(4576);d.exports=F(Z.process)==="process"},9392:d=>{d.exports=typeof navigator<"u"&&String(navigator.userAgent)||""},7388:(d,l,U)=>{var Z=U(4475),F=U(9392),t=Z.process,c=Z.Deno,W=t&&t.versions||c&&c.version,Q=W&&W.v8,a,n;Q&&(a=Q.split("."),n=a[0]>0&&a[0]<4?1:+(a[0]+a[1])),!n&&F&&(a=F.match(/Edge\/(\d+)/),(!a||a[1]>=74)&&(a=F.match(/Chrome\/(\d+)/),a&&(n=+a[1]))),d.exports=n},8727:d=>{d.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(d,l,U)=>{var Z=U(9504),F=Error,t=Z("".replace),c=function(a){return String(new F(a).stack)}("zxcasd"),W=/\n\s*at [^:]*:[^\n]*/,Q=W.test(c);d.exports=function(a,n){if(Q&&typeof a=="string"&&!F.prepareStackTrace)for(;n--;)a=t(a,W,"");return a}},6518:(d,l,U)=>{var Z=U(4475),F=U(7347).f,t=U(6699),c=U(6840),W=U(9433),Q=U(7740),a=U(2796);d.exports=function(n,s){var R=n.target,N=n.global,h=n.stat,e,M,J,T,G,Y;if(N?M=Z:h?M=Z[R]||W(R,{}):M=Z[R]&&Z[R].prototype,M)for(J in s){if(G=s[J],n.dontCallGetSet?(Y=F(M,J),T=Y&&Y.value):T=M[J],e=a(N?J:R+(h?".":"#")+J,n.forced),!e&&T!==void 0){if(typeof G==typeof T)continue;Q(G,T)}(n.sham||T&&T.sham)&&t(G,"sham",!0),c(M,J,G,n)}}},9039:d=>{d.exports=function(l){try{return!!l()}catch(U){return!0}}},6080:(d,l,U)=>{var Z=U(7476),F=U(9306),t=U(616),c=Z(Z.bind);d.exports=function(W,Q){return F(W),Q===void 0?W:t?c(W,Q):function(){return W.apply(Q,arguments)}}},616:(d,l,U)=>{var Z=U(9039);d.exports=!Z(function(){var F=function(){}.bind();return typeof F!="function"||F.hasOwnProperty("prototype")})},9565:(d,l,U)=>{var Z=U(616),F=Function.prototype.call;d.exports=Z?F.bind(F):function(){return F.apply(F,arguments)}},350:(d,l,U)=>{var Z=U(3724),F=U(9297),t=Function.prototype,c=Z&&Object.getOwnPropertyDescriptor,W=F(t,"name"),Q=W&&function(){}.name==="something",a=W&&(!Z||Z&&c(t,"name").configurable);d.exports={EXISTS:W,PROPER:Q,CONFIGURABLE:a}},6706:(d,l,U)=>{var Z=U(9504),F=U(9306);d.exports=function(t,c,W){try{return Z(F(Object.getOwnPropertyDescriptor(t,c)[W]))}catch(Q){}}},7476:(d,l,U)=>{var Z=U(4576),F=U(9504);d.exports=function(t){if(Z(t)==="Function")return F(t)}},9504:(d,l,U)=>{var Z=U(616),F=Function.prototype,t=F.call,c=Z&&F.bind.bind(t,t);d.exports=Z?c:function(W){return function(){return t.apply(W,arguments)}}},7751:(d,l,U)=>{var Z=U(4475),F=U(4901),t=function(c){return F(c)?c:void 0};d.exports=function(c,W){return arguments.length<2?t(Z[c]):Z[c]&&Z[c][W]}},1767:d=>{d.exports=function(l){return{iterator:l,next:l.next,done:!1}}},8646:(d,l,U)=>{var Z=U(9565),F=U(8551),t=U(1767),c=U(851);d.exports=function(W,Q){(!Q||typeof W!="string")&&F(W);var a=c(W);return t(F(a!==void 0?Z(a,W):W))}},851:(d,l,U)=>{var Z=U(6955),F=U(5966),t=U(4117),c=U(6269),W=U(8227),Q=W("iterator");d.exports=function(a){if(!t(a))return F(a,Q)||F(a,"@@iterator")||c[Z(a)]}},81:(d,l,U)=>{var Z=U(9565),F=U(9306),t=U(8551),c=U(6823),W=U(851),Q=TypeError;d.exports=function(a,n){var s=arguments.length<2?W(a):n;if(F(s))return t(Z(s,a));throw new Q(c(a)+" is not iterable")}},5966:(d,l,U)=>{var Z=U(9306),F=U(4117);d.exports=function(t,c){var W=t[c];return F(W)?void 0:Z(W)}},3789:(d,l,U)=>{var Z=U(9306),F=U(8551),t=U(9565),c=U(1291),W=U(1767),Q="Invalid size",a=RangeError,n=TypeError,s=Math.max,R=function(N,h){this.set=N,this.size=s(h,0),this.has=Z(N.has),this.keys=Z(N.keys)};R.prototype={getIterator:function(){return W(F(t(this.keys,this.set)))},includes:function(N){return t(this.has,this.set,N)}},d.exports=function(N){F(N);var h=+N.size;if(h!==h)throw new n(Q);var e=c(h);if(e<0)throw new a(Q);return new R(N,e)}},4475:function(d){var l=function(U){return U&&U.Math===Math&&U};d.exports=l(typeof globalThis=="object"&&globalThis)||l(typeof window=="object"&&window)||l(typeof self=="object"&&self)||l(typeof global=="object"&&global)||l(typeof this=="object"&&this)||function(){return this}()||Function("return this")()},9297:(d,l,U)=>{var Z=U(9504),F=U(8981),t=Z({}.hasOwnProperty);d.exports=Object.hasOwn||function(c,W){return t(F(c),W)}},421:d=>{d.exports={}},397:(d,l,U)=>{var Z=U(7751);d.exports=Z("document","documentElement")},5917:(d,l,U)=>{var Z=U(3724),F=U(9039),t=U(4055);d.exports=!Z&&!F(function(){return Object.defineProperty(t("div"),"a",{get:function(){return 7}}).a!==7})},7055:(d,l,U)=>{var Z=U(9504),F=U(9039),t=U(4576),c=Object,W=Z("".split);d.exports=F(function(){return!c("z").propertyIsEnumerable(0)})?function(Q){return t(Q)==="String"?W(Q,""):c(Q)}:c},3167:(d,l,U)=>{var Z=U(4901),F=U(34),t=U(2967);d.exports=function(c,W,Q){var a,n;return t&&Z(a=W.constructor)&&a!==Q&&F(n=a.prototype)&&n!==Q.prototype&&t(c,n),c}},3706:(d,l,U)=>{var Z=U(9504),F=U(4901),t=U(7629),c=Z(Function.toString);F(t.inspectSource)||(t.inspectSource=function(W){return c(W)}),d.exports=t.inspectSource},1181:(d,l,U)=>{var Z=U(8622),F=U(4475),t=U(34),c=U(6699),W=U(9297),Q=U(7629),a=U(6119),n=U(421),s="Object already initialized",R=F.TypeError,N=F.WeakMap,h,e,M,J=function(S){return M(S)?e(S):h(S,{})},T=function(S){return function(X){var B;if(!t(X)||(B=e(X)).type!==S)throw new R("Incompatible receiver, "+S+" required");return B}};if(Z||Q.state){var G=Q.state||(Q.state=new N);G.get=G.get,G.has=G.has,G.set=G.set,h=function(S,X){if(G.has(S))throw new R(s);return X.facade=S,G.set(S,X),X},e=function(S){return G.get(S)||{}},M=function(S){return G.has(S)}}else{var Y=a("state");n[Y]=!0,h=function(S,X){if(W(S,Y))throw new R(s);return X.facade=S,c(S,Y,X),X},e=function(S){return W(S,Y)?S[Y]:{}},M=function(S){return W(S,Y)}}d.exports={set:h,get:e,has:M,enforce:J,getterFor:T}},4209:(d,l,U)=>{var Z=U(8227),F=U(6269),t=Z("iterator"),c=Array.prototype;d.exports=function(W){return W!==void 0&&(F.Array===W||c[t]===W)}},4376:(d,l,U)=>{var Z=U(4576);d.exports=Array.isArray||function(F){return Z(F)==="Array"}},1108:(d,l,U)=>{var Z=U(6955);d.exports=function(F){var t=Z(F);return t==="BigInt64Array"||t==="BigUint64Array"}},4901:d=>{var l=typeof document=="object"&&document.all;d.exports=typeof l>"u"&&l!==void 0?function(U){return typeof U=="function"||U===l}:function(U){return typeof U=="function"}},2796:(d,l,U)=>{var Z=U(9039),F=U(4901),t=/#|\.prototype\./,c=function(s,R){var N=Q[W(s)];return N===n?!0:N===a?!1:F(R)?Z(R):!!R},W=c.normalize=function(s){return String(s).replace(t,".").toLowerCase()},Q=c.data={},a=c.NATIVE="N",n=c.POLYFILL="P";d.exports=c},4117:d=>{d.exports=function(l){return l==null}},34:(d,l,U)=>{var Z=U(4901);d.exports=function(F){return typeof F=="object"?F!==null:Z(F)}},3925:(d,l,U)=>{var Z=U(34);d.exports=function(F){return Z(F)||F===null}},6395:d=>{d.exports=!1},757:(d,l,U)=>{var Z=U(7751),F=U(4901),t=U(1625),c=U(7040),W=Object;d.exports=c?function(Q){return typeof Q=="symbol"}:function(Q){var a=Z("Symbol");return F(a)&&t(a.prototype,W(Q))}},507:(d,l,U)=>{var Z=U(9565);d.exports=function(F,t,c){for(var W=c?F:F.iterator,Q=F.next,a,n;!(a=Z(Q,W)).done;)if(n=t(a.value),n!==void 0)return n}},2652:(d,l,U)=>{var Z=U(6080),F=U(9565),t=U(8551),c=U(6823),W=U(4209),Q=U(6198),a=U(1625),n=U(81),s=U(851),R=U(9539),N=TypeError,h=function(M,J){this.stopped=M,this.result=J},e=h.prototype;d.exports=function(M,J,T){var G=T&&T.that,Y=!!(T&&T.AS_ENTRIES),S=!!(T&&T.IS_RECORD),X=!!(T&&T.IS_ITERATOR),B=!!(T&&T.INTERRUPTED),k=Z(J,G),p,o,y,I,E,O,r,u=function(_){return p&&R(p,"normal",_),new h(!0,_)},w=function(_){return Y?(t(_),B?k(_[0],_[1],u):k(_[0],_[1])):B?k(_,u):k(_)};if(S)p=M.iterator;else if(X)p=M;else{if(o=s(M),!o)throw new N(c(M)+" is not iterable");if(W(o)){for(y=0,I=Q(M);I>y;y++)if(E=w(M[y]),E&&a(e,E))return E;return new h(!1)}p=n(M,o)}for(O=S?M.next:p.next;!(r=F(O,p)).done;){try{E=w(r.value)}catch(_){R(p,"throw",_)}if(typeof E=="object"&&E&&a(e,E))return E}return new h(!1)}},9539:(d,l,U)=>{var Z=U(9565),F=U(8551),t=U(5966);d.exports=function(c,W,Q){var a,n;F(c);try{if(a=t(c,"return"),!a){if(W==="throw")throw Q;return Q}a=Z(a,c)}catch(s){n=!0,a=s}if(W==="throw")throw Q;if(n)throw a;return F(a),Q}},9462:(d,l,U)=>{var Z=U(9565),F=U(2360),t=U(6699),c=U(6279),W=U(8227),Q=U(1181),a=U(5966),n=U(7657).IteratorPrototype,s=U(2529),R=U(9539),N=W("toStringTag"),h="IteratorHelper",e="WrapForValidIterator",M=Q.set,J=function(Y){var S=Q.getterFor(Y?e:h);return c(F(n),{next:function(){var X=S(this);if(Y)return X.nextHandler();try{var B=X.done?void 0:X.nextHandler();return s(B,X.done)}catch(k){throw X.done=!0,k}},return:function(){var X=S(this),B=X.iterator;if(X.done=!0,Y){var k=a(B,"return");return k?Z(k,B):s(void 0,!0)}if(X.inner)try{R(X.inner.iterator,"normal")}catch(p){return R(B,"throw",p)}return R(B,"normal"),s(void 0,!0)}})},T=J(!0),G=J(!1);t(G,N,"Iterator Helper"),d.exports=function(Y,S){var X=function(B,k){k?(k.iterator=B.iterator,k.next=B.next):k=B,k.type=S?e:h,k.nextHandler=Y,k.counter=0,k.done=!1,M(this,k)};return X.prototype=S?T:G,X}},713:(d,l,U)=>{var Z=U(9565),F=U(9306),t=U(8551),c=U(1767),W=U(9462),Q=U(6319),a=W(function(){var n=this.iterator,s=t(Z(this.next,n)),R=this.done=!!s.done;if(!R)return Q(n,this.mapper,[s.value,this.counter++],!0)});d.exports=function(n){return t(this),F(n),new a(c(this),{mapper:n})}},7657:(d,l,U)=>{var Z=U(9039),F=U(4901),t=U(34),c=U(2360),W=U(2787),Q=U(6840),a=U(8227),n=U(6395),s=a("iterator"),R=!1,N,h,e;[].keys&&(e=[].keys(),"next"in e?(h=W(W(e)),h!==Object.prototype&&(N=h)):R=!0);var M=!t(N)||Z(function(){var J={};return N[s].call(J)!==J});M?N={}:n&&(N=c(N)),F(N[s])||Q(N,s,function(){return this}),d.exports={IteratorPrototype:N,BUGGY_SAFARI_ITERATORS:R}},6269:d=>{d.exports={}},6198:(d,l,U)=>{var Z=U(8014);d.exports=function(F){return Z(F.length)}},283:(d,l,U)=>{var Z=U(9504),F=U(9039),t=U(4901),c=U(9297),W=U(3724),Q=U(350).CONFIGURABLE,a=U(3706),n=U(1181),s=n.enforce,R=n.get,N=String,h=Object.defineProperty,e=Z("".slice),M=Z("".replace),J=Z([].join),T=W&&!F(function(){return h(function(){},"length",{value:8}).length!==8}),G=String(String).split("String"),Y=d.exports=function(S,X,B){e(N(X),0,7)==="Symbol("&&(X="["+M(N(X),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),B&&B.getter&&(X="get "+X),B&&B.setter&&(X="set "+X),(!c(S,"name")||Q&&S.name!==X)&&(W?h(S,"name",{value:X,configurable:!0}):S.name=X),T&&B&&c(B,"arity")&&S.length!==B.arity&&h(S,"length",{value:B.arity});try{B&&c(B,"constructor")&&B.constructor?W&&h(S,"prototype",{writable:!1}):S.prototype&&(S.prototype=void 0)}catch(p){}var k=s(S);return c(k,"source")||(k.source=J(G,typeof X=="string"?X:"")),S};Function.prototype.toString=Y(function(){return t(this)&&R(this).source||a(this)},"toString")},741:d=>{var l=Math.ceil,U=Math.floor;d.exports=Math.trunc||function(Z){var F=+Z;return(F>0?U:l)(F)}},6043:(d,l,U)=>{var Z=U(9306),F=TypeError,t=function(c){var W,Q;this.promise=new c(function(a,n){if(W!==void 0||Q!==void 0)throw new F("Bad Promise constructor");W=a,Q=n}),this.resolve=Z(W),this.reject=Z(Q)};d.exports.f=function(c){return new t(c)}},2603:(d,l,U)=>{var Z=U(655);d.exports=function(F,t){return F===void 0?arguments.length<2?"":t:Z(F)}},4149:d=>{var l=RangeError;d.exports=function(U){if(U===U)return U;throw new l("NaN is not allowed")}},2360:(d,l,U)=>{var Z=U(8551),F=U(6801),t=U(8727),c=U(421),W=U(397),Q=U(4055),a=U(6119),n=">",s="<",R="prototype",N="script",h=a("IE_PROTO"),e=function(){},M=function(S){return s+N+n+S+s+"/"+N+n},J=function(S){S.write(M("")),S.close();var X=S.parentWindow.Object;return S=null,X},T=function(){var S=Q("iframe"),X="java"+N+":",B;return S.style.display="none",W.appendChild(S),S.src=String(X),B=S.contentWindow.document,B.open(),B.write(M("document.F=Object")),B.close(),B.F},G,Y=function(){try{G=new ActiveXObject("htmlfile")}catch(X){}Y=typeof document<"u"?document.domain&&G?J(G):T():J(G);for(var S=t.length;S--;)delete Y[R][t[S]];return Y()};c[h]=!0,d.exports=Object.create||function(S,X){var B;return S!==null?(e[R]=Z(S),B=new e,e[R]=null,B[h]=S):B=Y(),X===void 0?B:F.f(B,X)}},6801:(d,l,U)=>{var Z=U(3724),F=U(8686),t=U(4913),c=U(8551),W=U(5397),Q=U(1072);l.f=Z&&!F?Object.defineProperties:function(a,n){c(a);for(var s=W(n),R=Q(n),N=R.length,h=0,e;N>h;)t.f(a,e=R[h++],s[e]);return a}},4913:(d,l,U)=>{var Z=U(3724),F=U(5917),t=U(8686),c=U(8551),W=U(6969),Q=TypeError,a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s="enumerable",R="configurable",N="writable";l.f=Z?t?function(h,e,M){if(c(h),e=W(e),c(M),typeof h=="function"&&e==="prototype"&&"value"in M&&N in M&&!M[N]){var J=n(h,e);J&&J[N]&&(h[e]=M.value,M={configurable:R in M?M[R]:J[R],enumerable:s in M?M[s]:J[s],writable:!1})}return a(h,e,M)}:a:function(h,e,M){if(c(h),e=W(e),c(M),F)try{return a(h,e,M)}catch(J){}if("get"in M||"set"in M)throw new Q("Accessors not supported");return"value"in M&&(h[e]=M.value),h}},7347:(d,l,U)=>{var Z=U(3724),F=U(9565),t=U(8773),c=U(6980),W=U(5397),Q=U(6969),a=U(9297),n=U(5917),s=Object.getOwnPropertyDescriptor;l.f=Z?s:function(R,N){if(R=W(R),N=Q(N),n)try{return s(R,N)}catch(h){}if(a(R,N))return c(!F(t.f,R,N),R[N])}},8480:(d,l,U)=>{var Z=U(1828),F=U(8727),t=F.concat("length","prototype");l.f=Object.getOwnPropertyNames||function(c){return Z(c,t)}},3717:(d,l)=>{l.f=Object.getOwnPropertySymbols},2787:(d,l,U)=>{var Z=U(9297),F=U(4901),t=U(8981),c=U(6119),W=U(2211),Q=c("IE_PROTO"),a=Object,n=a.prototype;d.exports=W?a.getPrototypeOf:function(s){var R=t(s);if(Z(R,Q))return R[Q];var N=R.constructor;return F(N)&&R instanceof N?N.prototype:R instanceof a?n:null}},1625:(d,l,U)=>{var Z=U(9504);d.exports=Z({}.isPrototypeOf)},1828:(d,l,U)=>{var Z=U(9504),F=U(9297),t=U(5397),c=U(9617).indexOf,W=U(421),Q=Z([].push);d.exports=function(a,n){var s=t(a),R=0,N=[],h;for(h in s)!F(W,h)&&F(s,h)&&Q(N,h);for(;n.length>R;)F(s,h=n[R++])&&(~c(N,h)||Q(N,h));return N}},1072:(d,l,U)=>{var Z=U(1828),F=U(8727);d.exports=Object.keys||function(t){return Z(t,F)}},8773:(d,l)=>{var U={}.propertyIsEnumerable,Z=Object.getOwnPropertyDescriptor,F=Z&&!U.call({1:2},1);l.f=F?function(t){var c=Z(this,t);return!!c&&c.enumerable}:U},2967:(d,l,U)=>{var Z=U(6706),F=U(34),t=U(7750),c=U(3506);d.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var W=!1,Q={},a;try{a=Z(Object.prototype,"__proto__","set"),a(Q,[]),W=Q instanceof Array}catch(n){}return function(n,s){return t(n),c(s),F(n)&&(W?a(n,s):n.__proto__=s),n}}():void 0)},4270:(d,l,U)=>{var Z=U(9565),F=U(4901),t=U(34),c=TypeError;d.exports=function(W,Q){var a,n;if(Q==="string"&&F(a=W.toString)&&!t(n=Z(a,W))||F(a=W.valueOf)&&!t(n=Z(a,W))||Q!=="string"&&F(a=W.toString)&&!t(n=Z(a,W)))return n;throw new c("Can't convert object to primitive value")}},5031:(d,l,U)=>{var Z=U(7751),F=U(9504),t=U(8480),c=U(3717),W=U(8551),Q=F([].concat);d.exports=Z("Reflect","ownKeys")||function(a){var n=t.f(W(a)),s=c.f;return s?Q(n,s(a)):n}},8235:(d,l,U)=>{var Z=U(9504),F=U(9297),t=SyntaxError,c=parseInt,W=String.fromCharCode,Q=Z("".charAt),a=Z("".slice),n=Z(/./.exec),s={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":`
|
||
`,"\\r":"\r","\\t":" "},R=/^[\da-f]{4}$/i,N=/^[\u0000-\u001F]$/;d.exports=function(h,e){for(var M=!0,J="";e<h.length;){var T=Q(h,e);if(T==="\\"){var G=a(h,e,e+2);if(F(s,G))J+=s[G],e+=2;else if(G==="\\u"){e+=2;var Y=a(h,e,e+4);if(!n(R,Y))throw new t("Bad Unicode escape at: "+e);J+=W(c(Y,16)),e+=4}else throw new t('Unknown escape sequence: "'+G+'"')}else if(T==='"'){M=!1,e++;break}else{if(n(N,T))throw new t("Bad control character in string literal at: "+e);J+=T,e++}}if(M)throw new t("Unterminated string at: "+e);return{value:J,end:e}}},7750:(d,l,U)=>{var Z=U(4117),F=TypeError;d.exports=function(t){if(Z(t))throw new F("Can't call method on "+t);return t}},9286:(d,l,U)=>{var Z=U(4402),F=U(8469),t=Z.Set,c=Z.add;d.exports=function(W){var Q=new t;return F(W,function(a){c(Q,a)}),Q}},3440:(d,l,U)=>{var Z=U(7080),F=U(4402),t=U(9286),c=U(5170),W=U(3789),Q=U(8469),a=U(507),n=F.has,s=F.remove;d.exports=function(R){var N=Z(this),h=W(R),e=t(N);return c(N)<=h.size?Q(N,function(M){h.includes(M)&&s(e,M)}):a(h.getIterator(),function(M){n(N,M)&&s(e,M)}),e}},4402:(d,l,U)=>{var Z=U(9504),F=Set.prototype;d.exports={Set,add:Z(F.add),has:Z(F.has),remove:Z(F.delete),proto:F}},8750:(d,l,U)=>{var Z=U(7080),F=U(4402),t=U(5170),c=U(3789),W=U(8469),Q=U(507),a=F.Set,n=F.add,s=F.has;d.exports=function(R){var N=Z(this),h=c(R),e=new a;return t(N)>h.size?Q(h.getIterator(),function(M){s(N,M)&&n(e,M)}):W(N,function(M){h.includes(M)&&n(e,M)}),e}},4449:(d,l,U)=>{var Z=U(7080),F=U(4402).has,t=U(5170),c=U(3789),W=U(8469),Q=U(507),a=U(9539);d.exports=function(n){var s=Z(this),R=c(n);if(t(s)<=R.size)return W(s,function(h){if(R.includes(h))return!1},!0)!==!1;var N=R.getIterator();return Q(N,function(h){if(F(s,h))return a(N,"normal",!1)})!==!1}},3838:(d,l,U)=>{var Z=U(7080),F=U(5170),t=U(8469),c=U(3789);d.exports=function(W){var Q=Z(this),a=c(W);return F(Q)>a.size?!1:t(Q,function(n){if(!a.includes(n))return!1},!0)!==!1}},8527:(d,l,U)=>{var Z=U(7080),F=U(4402).has,t=U(5170),c=U(3789),W=U(507),Q=U(9539);d.exports=function(a){var n=Z(this),s=c(a);if(t(n)<s.size)return!1;var R=s.getIterator();return W(R,function(N){if(!F(n,N))return Q(R,"normal",!1)})!==!1}},8469:(d,l,U)=>{var Z=U(9504),F=U(507),t=U(4402),c=t.Set,W=t.proto,Q=Z(W.forEach),a=Z(W.keys),n=a(new c).next;d.exports=function(s,R,N){return N?F({iterator:a(s),next:n},R):Q(s,R)}},4916:(d,l,U)=>{var Z=U(7751),F=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};d.exports=function(t){var c=Z("Set");try{new c()[t](F(0));try{return new c()[t](F(-1)),!1}catch(W){return!0}}catch(W){return!1}}},5170:(d,l,U)=>{var Z=U(6706),F=U(4402);d.exports=Z(F.proto,"size","get")||function(t){return t.size}},3650:(d,l,U)=>{var Z=U(7080),F=U(4402),t=U(9286),c=U(3789),W=U(507),Q=F.add,a=F.has,n=F.remove;d.exports=function(s){var R=Z(this),N=c(s).getIterator(),h=t(R);return W(N,function(e){a(R,e)?n(h,e):Q(h,e)}),h}},4204:(d,l,U)=>{var Z=U(7080),F=U(4402).add,t=U(9286),c=U(3789),W=U(507);d.exports=function(Q){var a=Z(this),n=c(Q).getIterator(),s=t(a);return W(n,function(R){F(s,R)}),s}},6119:(d,l,U)=>{var Z=U(5745),F=U(3392),t=Z("keys");d.exports=function(c){return t[c]||(t[c]=F(c))}},7629:(d,l,U)=>{var Z=U(6395),F=U(4475),t=U(9433),c="__core-js_shared__",W=d.exports=F[c]||t(c,{});(W.versions||(W.versions=[])).push({version:"3.37.1",mode:Z?"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:(d,l,U)=>{var Z=U(7629);d.exports=function(F,t){return Z[F]||(Z[F]=t||{})}},1548:(d,l,U)=>{var Z=U(4475),F=U(9039),t=U(7388),c=U(7290),W=U(516),Q=U(9088),a=Z.structuredClone;d.exports=!!a&&!F(function(){if(W&&t>92||Q&&t>94||c&&t>97)return!1;var n=new ArrayBuffer(8),s=a(n,{transfer:[n]});return n.byteLength!==0||s.byteLength!==8})},4495:(d,l,U)=>{var Z=U(7388),F=U(9039),t=U(4475),c=t.String;d.exports=!!Object.getOwnPropertySymbols&&!F(function(){var W=Symbol("symbol detection");return!c(W)||!(Object(W)instanceof Symbol)||!Symbol.sham&&Z&&Z<41})},5610:(d,l,U)=>{var Z=U(1291),F=Math.max,t=Math.min;d.exports=function(c,W){var Q=Z(c);return Q<0?F(Q+W,0):t(Q,W)}},5854:(d,l,U)=>{var Z=U(2777),F=TypeError;d.exports=function(t){var c=Z(t,"number");if(typeof c=="number")throw new F("Can't convert number to bigint");return BigInt(c)}},7696:(d,l,U)=>{var Z=U(1291),F=U(8014),t=RangeError;d.exports=function(c){if(c===void 0)return 0;var W=Z(c),Q=F(W);if(W!==Q)throw new t("Wrong length or index");return Q}},5397:(d,l,U)=>{var Z=U(7055),F=U(7750);d.exports=function(t){return Z(F(t))}},1291:(d,l,U)=>{var Z=U(741);d.exports=function(F){var t=+F;return t!==t||t===0?0:Z(t)}},8014:(d,l,U)=>{var Z=U(1291),F=Math.min;d.exports=function(t){var c=Z(t);return c>0?F(c,9007199254740991):0}},8981:(d,l,U)=>{var Z=U(7750),F=Object;d.exports=function(t){return F(Z(t))}},9590:(d,l,U)=>{var Z=U(1291),F=RangeError;d.exports=function(t){var c=Z(t);if(c<0)throw new F("The argument can't be less than 0");return c}},2777:(d,l,U)=>{var Z=U(9565),F=U(34),t=U(757),c=U(5966),W=U(4270),Q=U(8227),a=TypeError,n=Q("toPrimitive");d.exports=function(s,R){if(!F(s)||t(s))return s;var N=c(s,n),h;if(N){if(R===void 0&&(R="default"),h=Z(N,s,R),!F(h)||t(h))return h;throw new a("Can't convert object to primitive value")}return R===void 0&&(R="number"),W(s,R)}},6969:(d,l,U)=>{var Z=U(2777),F=U(757);d.exports=function(t){var c=Z(t,"string");return F(c)?c:c+""}},2140:(d,l,U)=>{var Z=U(8227),F=Z("toStringTag"),t={};t[F]="z",d.exports=String(t)==="[object z]"},655:(d,l,U)=>{var Z=U(6955),F=String;d.exports=function(t){if(Z(t)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return F(t)}},9714:(d,l,U)=>{var Z=U(9088);d.exports=function(F){try{if(Z)return Function('return require("'+F+'")')()}catch(t){}}},6823:d=>{var l=String;d.exports=function(U){try{return l(U)}catch(Z){return"Object"}}},3392:(d,l,U)=>{var Z=U(9504),F=0,t=Math.random(),c=Z(1 .toString);d.exports=function(W){return"Symbol("+(W===void 0?"":W)+")_"+c(++F+t,36)}},7040:(d,l,U)=>{var Z=U(4495);d.exports=Z&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},8686:(d,l,U)=>{var Z=U(3724),F=U(9039);d.exports=Z&&F(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})},2812:d=>{var l=TypeError;d.exports=function(U,Z){if(U<Z)throw new l("Not enough arguments");return U}},8622:(d,l,U)=>{var Z=U(4475),F=U(4901),t=Z.WeakMap;d.exports=F(t)&&/native code/.test(String(t))},8227:(d,l,U)=>{var Z=U(4475),F=U(5745),t=U(9297),c=U(3392),W=U(4495),Q=U(7040),a=Z.Symbol,n=F("wks"),s=Q?a.for||a:a&&a.withoutSetter||c;d.exports=function(R){return t(n,R)||(n[R]=W&&t(a,R)?a[R]:s("Symbol."+R)),n[R]}},6573:(d,l,U)=>{var Z=U(3724),F=U(2106),t=U(3238),c=ArrayBuffer.prototype;Z&&!("detached"in c)&&F(c,"detached",{configurable:!0,get:function(){return t(this)}})},7936:(d,l,U)=>{var Z=U(6518),F=U(5636);F&&Z({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return F(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(d,l,U)=>{var Z=U(6518),F=U(5636);F&&Z({target:"ArrayBuffer",proto:!0},{transfer:function(){return F(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(d,l,U)=>{var Z=U(6518),F=U(8981),t=U(6198),c=U(4527),W=U(6837),Q=U(9039),a=Q(function(){return[].push.call({length:4294967296},1)!==4294967297}),n=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(R){return R instanceof TypeError}},s=a||!n();Z({target:"Array",proto:!0,arity:1,forced:s},{push:function(R){var N=F(this),h=t(N),e=arguments.length;W(h+e);for(var M=0;M<e;M++)N[h]=arguments[M],h++;return c(N,h),h}})},4628:(d,l,U)=>{var Z=U(6518),F=U(6043);Z({target:"Promise",stat:!0},{withResolvers:function(){var t=F.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}})},7642:(d,l,U)=>{var Z=U(6518),F=U(3440),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("difference")},{difference:F})},8004:(d,l,U)=>{var Z=U(6518),F=U(9039),t=U(8750),c=U(4916),W=!c("intersection")||F(function(){return String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))!=="3,2"});Z({target:"Set",proto:!0,real:!0,forced:W},{intersection:t})},3853:(d,l,U)=>{var Z=U(6518),F=U(4449),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("isDisjointFrom")},{isDisjointFrom:F})},5876:(d,l,U)=>{var Z=U(6518),F=U(3838),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("isSubsetOf")},{isSubsetOf:F})},2475:(d,l,U)=>{var Z=U(6518),F=U(8527),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("isSupersetOf")},{isSupersetOf:F})},5024:(d,l,U)=>{var Z=U(6518),F=U(3650),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("symmetricDifference")},{symmetricDifference:F})},1698:(d,l,U)=>{var Z=U(6518),F=U(4204),t=U(4916);Z({target:"Set",proto:!0,real:!0,forced:!t("union")},{union:F})},7467:(d,l,U)=>{var Z=U(7628),F=U(4644),t=F.aTypedArray,c=F.exportTypedArrayMethod,W=F.getTypedArrayConstructor;c("toReversed",function(){return Z(t(this),W(this))})},4732:(d,l,U)=>{var Z=U(4644),F=U(9504),t=U(9306),c=U(5370),W=Z.aTypedArray,Q=Z.getTypedArrayConstructor,a=Z.exportTypedArrayMethod,n=F(Z.TypedArrayPrototype.sort);a("toSorted",function(s){s!==void 0&&t(s);var R=W(this),N=c(Q(R),R);return n(N,s)})},9577:(d,l,U)=>{var Z=U(9928),F=U(4644),t=U(1108),c=U(1291),W=U(5854),Q=F.aTypedArray,a=F.getTypedArrayConstructor,n=F.exportTypedArrayMethod,s=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(R){return R===8}}();n("with",function(R,N){var h=Q(this),e=c(R),M=t(h)?W(N):+N;return Z(h,a(h),e,M)},!s)},8992:(d,l,U)=>{var Z=U(6518),F=U(4475),t=U(679),c=U(8551),W=U(4901),Q=U(2787),a=U(2106),n=U(4659),s=U(9039),R=U(9297),N=U(8227),h=U(7657).IteratorPrototype,e=U(3724),M=U(6395),J="constructor",T="Iterator",G=N("toStringTag"),Y=TypeError,S=F[T],X=M||!W(S)||S.prototype!==h||!s(function(){S({})}),B=function(){if(t(this,h),Q(this)===h)throw new Y("Abstract class Iterator not directly constructable")},k=function(p,o){e?a(h,p,{configurable:!0,get:function(){return o},set:function(y){if(c(this),this===h)throw new Y("You can't redefine this property");R(this,p)?this[p]=y:n(this,p,y)}}):h[p]=o};R(h,G)||k(G,T),(X||!R(h,J)||h[J]===Object)&&k(J,B),B.prototype=h,Z({global:!0,constructor:!0,forced:X},{Iterator:B})},4743:(d,l,U)=>{var Z=U(6518),F=U(9565),t=U(8551),c=U(1767),W=U(4149),Q=U(9590),a=U(9462),n=U(6395),s=a(function(){for(var R=this.iterator,N=this.next,h,e;this.remaining;)if(this.remaining--,h=t(F(N,R)),e=this.done=!!h.done,e)return;if(h=t(F(N,R)),e=this.done=!!h.done,!e)return h.value});Z({target:"Iterator",proto:!0,real:!0,forced:n},{drop:function(R){t(this);var N=Q(W(+R));return new s(c(this),{remaining:N})}})},3215:(d,l,U)=>{var Z=U(6518),F=U(2652),t=U(9306),c=U(8551),W=U(1767);Z({target:"Iterator",proto:!0,real:!0},{every:function(Q){c(this),t(Q);var a=W(this),n=0;return!F(a,function(s,R){if(!Q(s,n++))return R()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},4520:(d,l,U)=>{var Z=U(6518),F=U(9565),t=U(9306),c=U(8551),W=U(1767),Q=U(9462),a=U(6319),n=U(6395),s=Q(function(){for(var R=this.iterator,N=this.predicate,h=this.next,e,M,J;;){if(e=c(F(h,R)),M=this.done=!!e.done,M)return;if(J=e.value,a(R,N,[J,this.counter++],!0))return J}});Z({target:"Iterator",proto:!0,real:!0,forced:n},{filter:function(R){return c(this),t(R),new s(W(this),{predicate:R})}})},670:(d,l,U)=>{var Z=U(6518),F=U(9565),t=U(9306),c=U(8551),W=U(1767),Q=U(8646),a=U(9462),n=U(9539),s=U(6395),R=a(function(){for(var N=this.iterator,h=this.mapper,e,M;;){if(M=this.inner)try{if(e=c(F(M.next,M.iterator)),!e.done)return e.value;this.inner=null}catch(J){n(N,"throw",J)}if(e=c(F(this.next,N)),this.done=!!e.done)return;try{this.inner=Q(h(e.value,this.counter++),!1)}catch(J){n(N,"throw",J)}}});Z({target:"Iterator",proto:!0,real:!0,forced:s},{flatMap:function(N){return c(this),t(N),new R(W(this),{mapper:N,inner:null})}})},1454:(d,l,U)=>{var Z=U(6518),F=U(713),t=U(6395);Z({target:"Iterator",proto:!0,real:!0,forced:t},{map:F})},7550:(d,l,U)=>{var Z=U(6518),F=U(2652),t=U(9306),c=U(8551),W=U(1767);Z({target:"Iterator",proto:!0,real:!0},{some:function(Q){c(this),t(Q);var a=W(this),n=0;return F(a,function(s,R){if(Q(s,n++))return R()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},8335:(d,l,U)=>{var Z=U(6518),F=U(3724),t=U(4475),c=U(7751),W=U(9504),Q=U(9565),a=U(4901),n=U(34),s=U(4376),R=U(9297),N=U(655),h=U(6198),e=U(4659),M=U(9039),J=U(8235),T=U(4495),G=t.JSON,Y=t.Number,S=t.SyntaxError,X=G&&G.parse,B=c("Object","keys"),k=Object.getOwnPropertyDescriptor,p=W("".charAt),o=W("".slice),y=W(/./.exec),I=W([].push),E=/^\d$/,O=/^[1-9]$/,r=/^(?:-|\d)$/,u=/^[\t\n\r ]$/,w=0,_=1,Ql=function(x,L){x=N(x);var C=new al(x,0),v=C.parse(),Zl=v.value,K=C.skip(u,v.end);if(K<x.length)throw new S('Unexpected extra character: "'+p(x,K)+'" after the parsed data at: '+K);return a(L)?Ml({"":Zl},"",L,v):Zl},Ml=function(x,L,C,v){var Zl=x[L],K=v&&Zl===v.value,nl=K&&typeof v.source=="string"?{source:v.source}:{},Xl,rU,ql,Yl,rF;if(n(Zl)){var ws=s(Zl),FV=K?v.nodes:ws?[]:{};if(ws)for(Xl=FV.length,ql=h(Zl),Yl=0;Yl<ql;Yl++)FU(Zl,Yl,Ml(Zl,""+Yl,C,Yl<Xl?FV[Yl]:void 0));else for(rU=B(Zl),ql=h(rU),Yl=0;Yl<ql;Yl++)rF=rU[Yl],FU(Zl,rF,Ml(Zl,rF,C,R(FV,rF)?FV[rF]:void 0))}return Q(C,x,L,Zl,nl)},FU=function(x,L,C){if(F){var v=k(x,L);if(v&&!v.configurable)return}C===void 0?delete x[L]:e(x,L,C)},cl=function(x,L,C,v){this.value=x,this.end=L,this.source=C,this.nodes=v},al=function(x,L){this.source=x,this.index=L};al.prototype={fork:function(x){return new al(this.source,x)},parse:function(){var x=this.source,L=this.skip(u,this.index),C=this.fork(L),v=p(x,L);if(y(r,v))return C.number();switch(v){case"{":return C.object();case"[":return C.array();case'"':return C.string();case"t":return C.keyword(!0);case"f":return C.keyword(!1);case"n":return C.keyword(null)}throw new S('Unexpected character: "'+v+'" at: '+L)},node:function(x,L,C,v,Zl){return new cl(L,v,x?null:o(this.source,C,v),Zl)},object:function(){for(var x=this.source,L=this.index+1,C=!1,v={},Zl={};L<x.length;){if(L=this.until(['"',"}"],L),p(x,L)==="}"&&!C){L++;break}var K=this.fork(L).string(),nl=K.value;L=K.end,L=this.until([":"],L)+1,L=this.skip(u,L),K=this.fork(L).parse(),e(Zl,nl,K),e(v,nl,K.value),L=this.until([",","}"],K.end);var Xl=p(x,L);if(Xl===",")C=!0,L++;else if(Xl==="}"){L++;break}}return this.node(_,v,this.index,L,Zl)},array:function(){for(var x=this.source,L=this.index+1,C=!1,v=[],Zl=[];L<x.length;){if(L=this.skip(u,L),p(x,L)==="]"&&!C){L++;break}var K=this.fork(L).parse();if(I(Zl,K),I(v,K.value),L=this.until([",","]"],K.end),p(x,L)===",")C=!0,L++;else if(p(x,L)==="]"){L++;break}}return this.node(_,v,this.index,L,Zl)},string:function(){var x=this.index,L=J(this.source,this.index+1);return this.node(w,L.value,x,L.end)},number:function(){var x=this.source,L=this.index,C=L;if(p(x,C)==="-"&&C++,p(x,C)==="0")C++;else if(y(O,p(x,C)))C=this.skip(E,++C);else throw new S("Failed to parse number at: "+C);if(p(x,C)==="."&&(C=this.skip(E,++C)),p(x,C)==="e"||p(x,C)==="E"){C++,(p(x,C)==="+"||p(x,C)==="-")&&C++;var v=C;if(C=this.skip(E,C),v===C)throw new S("Failed to parse number's exponent value at: "+C)}return this.node(w,Y(o(x,L,C)),L,C)},keyword:function(x){var L=""+x,C=this.index,v=C+L.length;if(o(this.source,C,v)!==L)throw new S("Failed to parse value at: "+C);return this.node(w,x,C,v)},skip:function(x,L){for(var C=this.source;L<C.length&&y(x,p(C,L));L++);return L},until:function(x,L){L=this.skip(u,L);for(var C=p(this.source,L),v=0;v<x.length;v++)if(x[v]===C)return L;throw new S('Unexpected character: "'+C+'" at: '+L)}};var Od=M(function(){var x="9007199254740993",L;return X(x,function(C,v,Zl){L=Zl.source}),L!==x}),Vd=T&&!M(function(){return 1/X("-0 ")!==-1/0});Z({target:"JSON",stat:!0,forced:Od},{parse:function(x,L){return Vd&&!a(L)?X(x):Ql(x,L)}})},3375:(d,l,U)=>{U(7642)},9225:(d,l,U)=>{U(8004)},3972:(d,l,U)=>{U(3853)},9209:(d,l,U)=>{U(5876)},5714:(d,l,U)=>{U(2475)},7561:(d,l,U)=>{U(5024)},6197:(d,l,U)=>{U(1698)},4979:(d,l,U)=>{var Z=U(6518),F=U(4475),t=U(7751),c=U(6980),W=U(4913).f,Q=U(9297),a=U(679),n=U(3167),s=U(2603),R=U(5002),N=U(6193),h=U(3724),e=U(6395),M="DOMException",J=t("Error"),T=t(M),G=function(){a(this,Y);var r=arguments.length,u=s(r<1?void 0:arguments[0]),w=s(r<2?void 0:arguments[1],"Error"),_=new T(u,w),Ql=new J(u);return Ql.name=M,W(_,"stack",c(1,N(Ql.stack,1))),n(_,this,G),_},Y=G.prototype=T.prototype,S="stack"in new J(M),X="stack"in new T(1,2),B=T&&h&&Object.getOwnPropertyDescriptor(F,M),k=!!B&&!(B.writable&&B.configurable),p=S&&!k&&!X;Z({global:!0,constructor:!0,forced:e||p},{DOMException:p?G:T});var o=t(M),y=o.prototype;if(y.constructor!==o){e||W(y,"constructor",c(1,o));for(var I in R)if(Q(R,I)){var E=R[I],O=E.s;Q(o,O)||W(o,O,c(6,E.c))}}},4603:(d,l,U)=>{var Z=U(6840),F=U(9504),t=U(655),c=U(2812),W=URLSearchParams,Q=W.prototype,a=F(Q.append),n=F(Q.delete),s=F(Q.forEach),R=F([].push),N=new W("a=1&a=2&b=3");N.delete("a",1),N.delete("b",void 0),N+""!="a=2"&&Z(Q,"delete",function(h){var e=arguments.length,M=e<2?void 0:arguments[1];if(e&&M===void 0)return n(this,h);var J=[];s(this,function(p,o){R(J,{key:o,value:p})}),c(e,1);for(var T=t(h),G=t(M),Y=0,S=0,X=!1,B=J.length,k;Y<B;)k=J[Y++],X||k.key===T?(X=!0,n(this,k.key)):S++;for(;S<B;)k=J[S++],k.key===T&&k.value===G||a(this,k.key,k.value)},{enumerable:!0,unsafe:!0})},7566:(d,l,U)=>{var Z=U(6840),F=U(9504),t=U(655),c=U(2812),W=URLSearchParams,Q=W.prototype,a=F(Q.getAll),n=F(Q.has),s=new W("a=1");(s.has("a",2)||!s.has("a",void 0))&&Z(Q,"has",function(R){var N=arguments.length,h=N<2?void 0:arguments[1];if(N&&h===void 0)return n(this,R);var e=a(this,R);c(N,1);for(var M=t(h),J=0;J<e.length;)if(e[J++]===M)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:(d,l,U)=>{var Z=U(3724),F=U(9504),t=U(2106),c=URLSearchParams.prototype,W=F(c.forEach);Z&&!("size"in c)&&t(c,"size",{get:function(){var Q=0;return W(this,function(){Q++}),Q},configurable:!0,enumerable:!0})}},ub={};function dl(d){var l=ub[d];if(l!==void 0)return l.exports;var U=ub[d]={exports:{}};return aJ[d].call(U.exports,U,U.exports,dl),U.exports}dl.d=(d,l)=>{for(var U in l)dl.o(l,U)&&!dl.o(d,U)&&Object.defineProperty(d,U,{enumerable:!0,get:l[U]})};dl.o=(d,l)=>Object.prototype.hasOwnProperty.call(d,l);var H=globalThis.pdfjsLib={};dl.d(H,{AbortException:()=>CF,AnnotationEditorLayer:()=>GT,AnnotationEditorParamsType:()=>P,AnnotationEditorType:()=>ll,AnnotationEditorUIManager:()=>fW,AnnotationLayer:()=>bT,AnnotationMode:()=>hZ,CMapCompressionType:()=>iR,ColorPicker:()=>O2,DOMSVGFactory:()=>Wb,DrawLayer:()=>TT,FeatureTest:()=>sU,GlobalWorkerOptions:()=>p0,ImageKind:()=>uQ,InvalidPDFException:()=>ye,MissingPDFException:()=>wF,OPS:()=>wU,Outliner:()=>MN,PDFDataRangeTransport:()=>M2,PDFDateString:()=>xe,PDFWorker:()=>Ua,PasswordResponses:()=>RJ,PermissionFlag:()=>iJ,PixelsPerInch:()=>Y0,RenderingCancelledException:()=>Vb,TextLayer:()=>Pn,UnexpectedResponseException:()=>Bs,Util:()=>j,VerbosityLevel:()=>Xs,XfaLayer:()=>T2,build:()=>AG,createValidAbsoluteUrl:()=>mJ,fetchData:()=>Ls,getDocument:()=>CG,getFilenameFromUrl:()=>uJ,getPdfFilenameFromUrl:()=>oJ,getXfaPageViewport:()=>yJ,isDataScheme:()=>Qb,isPdfFile:()=>ab,noContextMenu:()=>iU,normalizeUnicode:()=>SJ,renderTextLayer:()=>oG,setLayerDimensions:()=>IF,shadow:()=>Ul,updateTextLayer:()=>yG,version:()=>fG});dl(4114);dl(6573);dl(8100);dl(7936);dl(7467);dl(4732);dl(9577);dl(4603);dl(7566);dl(8721);const _l=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),oe=[1,0,0,1,0,0],sR=[.001,0,0,.001,0,0],nJ=1e7,Os=1.35,XU={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256},hZ={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},sJ="pdfjs_internal_editor_",ll={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},P={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},iJ={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},Ol={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},uQ={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},Jl={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},u0={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Xs={ERRORS:0,WARNINGS:1,INFOS:5},iR={NONE:0,BINARY:1},wU={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},RJ={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Ys=Xs.WARNINGS;function NJ(d){Number.isInteger(d)&&(Ys=d)}function hJ(){return Ys}function ps(d){Ys>=Xs.INFOS&&console.log(`Info: ${d}`)}function A(d){Ys>=Xs.WARNINGS&&console.log(`Warning: ${d}`)}function tl(d){throw new Error(d)}function Tl(d,l){d||tl(l)}function bJ(d){switch(d==null?void 0:d.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function mJ(d,l=null,U=null){if(!d)return null;try{if(U&&typeof d=="string"){if(U.addDefaultProtocol&&d.startsWith("www.")){const F=d.match(/\./g);(F==null?void 0:F.length)>=2&&(d=`http://${d}`)}if(U.tryConvertEncoding)try{d=TJ(d)}catch(F){}}const Z=l?new URL(d,l):new URL(d);if(bJ(Z))return Z}catch(Z){}return null}function Ul(d,l,U,Z=!1){return Object.defineProperty(d,l,{value:U,enumerable:!Z,configurable:!0,writable:!1}),U}const zZ=function(){function d(l,U){this.constructor===d&&tl("Cannot initialize BaseException."),this.message=l,this.name=U}return d.prototype=new Error,d.constructor=d,d}();class RR extends zZ{constructor(l,U){super(l,"PasswordException"),this.code=U}}class NR extends zZ{constructor(l,U){super(l,"UnknownErrorException"),this.details=U}}let ye=class extends zZ{constructor(d){super(d,"InvalidPDFException")}},wF=class extends zZ{constructor(d){super(d,"MissingPDFException")}},Bs=class extends zZ{constructor(d,l){super(d,"UnexpectedResponseException"),this.status=l}};class eJ extends zZ{constructor(l){super(l,"FormatError")}}let CF=class extends zZ{constructor(d){super(d,"AbortException")}};function ke(d){(typeof d!="object"||(d==null?void 0:d.length)===void 0)&&tl("Invalid argument for bytesToString");const l=d.length,U=8192;if(l<U)return String.fromCharCode.apply(null,d);const Z=[];for(let F=0;F<l;F+=U){const t=Math.min(F+U,l),c=d.subarray(F,t);Z.push(String.fromCharCode.apply(null,c))}return Z.join("")}function us(d){typeof d!="string"&&tl("Invalid argument for stringToBytes");const l=d.length,U=new Uint8Array(l);for(let Z=0;Z<l;++Z)U[Z]=d.charCodeAt(Z)&255;return U}function MJ(d){return String.fromCharCode(d>>24&255,d>>16&255,d>>8&255,d&255)}function tb(d){const l=Object.create(null);for(const[U,Z]of d)l[U]=Z;return l}function JJ(){const d=new Uint8Array(4);return d[0]=1,new Uint32Array(d.buffer,0,1)[0]===1}function GJ(){try{return new Function(""),!0}catch(d){return!1}}class sU{static get isLittleEndian(){return Ul(this,"isLittleEndian",JJ())}static get isEvalSupported(){return Ul(this,"isEvalSupported",GJ())}static get isOffscreenCanvasSupported(){return Ul(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get platform(){return typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.platform)=="string"?Ul(this,"platform",{isMac:navigator.platform.includes("Mac")}):Ul(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){var l,U;return Ul(this,"isCSSRoundSupported",(U=(l=globalThis.CSS)==null?void 0:l.supports)==null?void 0:U.call(l,"width: round(1.5px, 1px)"))}}const gs=Array.from(Array(256).keys(),d=>d.toString(16).padStart(2,"0"));var o0,VV,QV,aV,Ks;let j=(VV=class{static makeHexColor(d,l,U){return`#${gs[d]}${gs[l]}${gs[U]}`}static scaleMinMax(d,l){let U;d[0]?(d[0]<0&&(U=l[0],l[0]=l[2],l[2]=U),l[0]*=d[0],l[2]*=d[0],d[3]<0&&(U=l[1],l[1]=l[3],l[3]=U),l[1]*=d[3],l[3]*=d[3]):(U=l[0],l[0]=l[1],l[1]=U,U=l[2],l[2]=l[3],l[3]=U,d[1]<0&&(U=l[1],l[1]=l[3],l[3]=U),l[1]*=d[1],l[3]*=d[1],d[2]<0&&(U=l[0],l[0]=l[2],l[2]=U),l[0]*=d[2],l[2]*=d[2]),l[0]+=d[4],l[1]+=d[5],l[2]+=d[4],l[3]+=d[5]}static transform(d,l){return[d[0]*l[0]+d[2]*l[1],d[1]*l[0]+d[3]*l[1],d[0]*l[2]+d[2]*l[3],d[1]*l[2]+d[3]*l[3],d[0]*l[4]+d[2]*l[5]+d[4],d[1]*l[4]+d[3]*l[5]+d[5]]}static applyTransform(d,l){const U=d[0]*l[0]+d[1]*l[2]+l[4],Z=d[0]*l[1]+d[1]*l[3]+l[5];return[U,Z]}static applyInverseTransform(d,l){const U=l[0]*l[3]-l[1]*l[2],Z=(d[0]*l[3]-d[1]*l[2]+l[2]*l[5]-l[4]*l[3])/U,F=(-d[0]*l[1]+d[1]*l[0]+l[4]*l[1]-l[5]*l[0])/U;return[Z,F]}static getAxialAlignedBoundingBox(d,l){const U=this.applyTransform(d,l),Z=this.applyTransform(d.slice(2,4),l),F=this.applyTransform([d[0],d[3]],l),t=this.applyTransform([d[2],d[1]],l);return[Math.min(U[0],Z[0],F[0],t[0]),Math.min(U[1],Z[1],F[1],t[1]),Math.max(U[0],Z[0],F[0],t[0]),Math.max(U[1],Z[1],F[1],t[1])]}static inverseTransform(d){const l=d[0]*d[3]-d[1]*d[2];return[d[3]/l,-d[1]/l,-d[2]/l,d[0]/l,(d[2]*d[5]-d[4]*d[3])/l,(d[4]*d[1]-d[5]*d[0])/l]}static singularValueDecompose2dScale(d){const l=[d[0],d[2],d[1],d[3]],U=d[0]*l[0]+d[1]*l[2],Z=d[0]*l[1]+d[1]*l[3],F=d[2]*l[0]+d[3]*l[2],t=d[2]*l[1]+d[3]*l[3],c=(U+t)/2,W=Math.sqrt(jF(U+t,2)-4*(U*t-F*Z))/2,Q=c+W||1,a=c-W||1;return[Math.sqrt(Q),Math.sqrt(a)]}static normalizeRect(d){const l=d.slice(0);return d[0]>d[2]&&(l[0]=d[2],l[2]=d[0]),d[1]>d[3]&&(l[1]=d[3],l[3]=d[1]),l}static intersect(d,l){const U=Math.max(Math.min(d[0],d[2]),Math.min(l[0],l[2])),Z=Math.min(Math.max(d[0],d[2]),Math.max(l[0],l[2]));if(U>Z)return null;const F=Math.max(Math.min(d[1],d[3]),Math.min(l[1],l[3])),t=Math.min(Math.max(d[1],d[3]),Math.max(l[1],l[3]));return F>t?null:[U,F,Z,t]}static bezierBoundingBox(d,l,U,Z,F,t,c,W,Q){return Q?(Q[0]=Math.min(Q[0],d,c),Q[1]=Math.min(Q[1],l,W),Q[2]=Math.max(Q[2],d,c),Q[3]=Math.max(Q[3],l,W)):Q=[Math.min(d,c),Math.min(l,W),Math.max(d,c),Math.max(l,W)],b(this,aV,Ks).call(this,d,U,F,c,l,Z,t,W,3*(-d+3*(U-F)+c),6*(d-2*U+F),3*(U-d),Q),b(this,aV,Ks).call(this,d,U,F,c,l,Z,t,W,3*(-l+3*(Z-t)+W),6*(l-2*Z+t),3*(Z-l),Q),Q}},o0=new WeakSet,QV=function(d,l,U,Z,F,t,c,W,Q,a){if(Q<=0||Q>=1)return;const n=1-Q,s=Q*Q,R=s*Q,N=n*(n*(n*d+3*Q*l)+3*s*U)+R*Z,h=n*(n*(n*F+3*Q*t)+3*s*c)+R*W;a[0]=Math.min(a[0],N),a[1]=Math.min(a[1],h),a[2]=Math.max(a[2],N),a[3]=Math.max(a[3],h)},aV=new WeakSet,Ks=function(d,l,U,Z,F,t,c,W,Q,a,n,s){if(Math.abs(Q)<1e-12){Math.abs(a)>=1e-12&&b(this,o0,QV).call(this,d,l,U,Z,F,t,c,W,-n/a,s);return}const R=jF(a,2)-4*n*Q;if(R<0)return;const N=Math.sqrt(R),h=2*Q;b(this,o0,QV).call(this,d,l,U,Z,F,t,c,W,(-a+N)/h,s),b(this,o0,QV).call(this,d,l,U,Z,F,t,c,W,(-a-N)/h,s)},i(VV,o0),i(VV,aV),VV);function TJ(d){return decodeURIComponent(escape(d))}let vs=null,ob=null;function SJ(d){return vs||(vs=/([\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,ob=new Map([["ſt","ſt"]])),d.replaceAll(vs,(l,U,Z)=>U?U.normalize("NFKC"):ob.get(Z))}function XJ(){if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.randomUUID)=="function")return crypto.randomUUID();const d=new Uint8Array(32);if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.getRandomValues)=="function")crypto.getRandomValues(d);else for(let l=0;l<32;l++)d[l]=Math.floor(Math.random()*255);return ke(d)}const Le="pdfjs_internal_id_",Qd={BEZIER_CURVE_TO:0,MOVE_TO:1,LINE_TO:2,QUADRATIC_CURVE_TO:3,RESTORE:4,SAVE:5,SCALE:6,TRANSFORM:7,TRANSLATE:8};dl(4628);dl(1454);dl(3375);dl(9225);dl(3972);dl(9209);dl(5714);dl(7561);dl(6197);dl(4979);dl(8992);dl(4743);dl(3215);dl(7550);dl(8335);dl(4520);class os{constructor(){this.constructor===os&&tl("Cannot initialize BaseFilterFactory.")}addFilter(l){return"none"}addHCMFilter(l,U){return"none"}addAlphaFilter(l){return"none"}addLuminosityFilter(l){return"none"}addHighlightHCMFilter(l,U,Z,F,t){return"none"}destroy(l=!1){}}var oQ;const YJ=class ze{constructor({enableHWA:l=!1}={}){i(this,oQ,!1),this.constructor===ze&&tl("Cannot initialize BaseCanvasFactory."),m(this,oQ,l)}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",{willReadFrequently:!V(this,oQ)})}}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){tl("Abstract method `_createCanvas` called.")}};oQ=new WeakMap;let De=YJ;class ys{constructor({baseUrl:l=null,isCompressed:U=!0}){this.constructor===ys&&tl("Cannot initialize BaseCMapReaderFactory."),this.baseUrl=l,this.isCompressed=U}fetch(U){return D(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":""),F=this.isCompressed?iR.BINARY:iR.NONE;return this._fetchData(Z,F).catch(t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${Z}`)})})}_fetchData(l,U){tl("Abstract method `_fetchData` called.")}}class ks{constructor({baseUrl:l=null}){this.constructor===ks&&tl("Cannot initialize BaseStandardFontDataFactory."),this.baseUrl=l}fetch(U){return D(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(F=>{throw new Error(`Unable to load font data at: ${Z}`)})})}_fetchData(l){tl("Abstract method `_fetchData` called.")}}class cb{constructor(){this.constructor===cb&&tl("Cannot initialize BaseSVGFactory.")}create(l,U,Z=!1){if(l<=0||U<=0)throw new Error("Invalid SVG dimensions");const F=this._createSVG("svg:svg");return F.setAttribute("version","1.1"),Z||(F.setAttribute("width",`${l}px`),F.setAttribute("height",`${U}px`)),F.setAttribute("preserveAspectRatio","none"),F.setAttribute("viewBox",`0 0 ${l} ${U}`),F}createElement(l){if(typeof l!="string")throw new Error("Invalid SVG element type");return this._createSVG(l)}_createSVG(l){tl("Abstract method `_createSVG` called.")}}const ed="http://www.w3.org/2000/svg";var IZ;let Y0=(IZ=class{},f(IZ,"CSS",96),f(IZ,"PDF",72),f(IZ,"PDF_TO_CSS_UNITS",IZ.CSS/IZ.PDF),IZ);var pF,Ld,UZ,NU,yQ,ct,zl,gl,qZ,Wt,BF,Kt,Rc,kQ,hR,Ie,LQ,bR,$Z,Vt,Qt,y0,at,Nc,zQ,mR,nt,hc;class pJ extends os{constructor({docId:l,ownerDocument:U=globalThis.document}={}){super(),i(this,zl),i(this,qZ),i(this,BF),i(this,Rc),i(this,hR),i(this,LQ),i(this,$Z),i(this,Qt),i(this,at),i(this,zQ),i(this,nt),i(this,pF,void 0),i(this,Ld,void 0),i(this,UZ,void 0),i(this,NU,void 0),i(this,yQ,void 0),i(this,ct,0),m(this,UZ,l),m(this,NU,U)}addFilter(l){if(!l)return"none";let U=V(this,zl,gl).get(l);if(U)return U;const[Z,F,t]=b(this,Rc,kQ).call(this,l),c=l.length===1?Z:`${Z}${F}${t}`;if(U=V(this,zl,gl).get(c),U)return V(this,zl,gl).set(l,U),U;const W=`g_${V(this,UZ)}_transfer_map_${bU(this,ct)._++}`,Q=`url(#${W})`;V(this,zl,gl).set(l,Q),V(this,zl,gl).set(c,Q);const a=b(this,$Z,Vt).call(this,W);return b(this,at,Nc).call(this,Z,F,t,a),Q}addHCMFilter(l,U){var Z;const F=`${l}-${U}`,t="base";let c=V(this,qZ,Wt).get(t);if((c==null?void 0:c.key)===F||(c?((Z=c.filter)==null||Z.remove(),c.key=F,c.url="none",c.filter=null):(c={key:F,url:"none",filter:null},V(this,qZ,Wt).set(t,c)),!l||!U))return c.url;const W=b(this,nt,hc).call(this,l);l=j.makeHexColor(...W);const Q=b(this,nt,hc).call(this,U);if(U=j.makeHexColor(...Q),V(this,BF,Kt).style.color="",l==="#000000"&&U==="#ffffff"||l===U)return c.url;const a=new Array(256);for(let h=0;h<=255;h++){const e=h/255;a[h]=e<=.03928?e/12.92:jF((e+.055)/1.055,2.4)}const n=a.join(","),s=`g_${V(this,UZ)}_hcm_filter`,R=c.filter=b(this,$Z,Vt).call(this,s);b(this,at,Nc).call(this,n,n,n,R),b(this,LQ,bR).call(this,R);const N=(h,e)=>{const M=W[h]/255,J=Q[h]/255,T=new Array(e+1);for(let G=0;G<=e;G++)T[G]=M+G/e*(J-M);return T.join(",")};return b(this,at,Nc).call(this,N(0,5),N(1,5),N(2,5),R),c.url=`url(#${s})`,c.url}addAlphaFilter(l){let U=V(this,zl,gl).get(l);if(U)return U;const[Z]=b(this,Rc,kQ).call(this,[l]),F=`alpha_${Z}`;if(U=V(this,zl,gl).get(F),U)return V(this,zl,gl).set(l,U),U;const t=`g_${V(this,UZ)}_alpha_map_${bU(this,ct)._++}`,c=`url(#${t})`;V(this,zl,gl).set(l,c),V(this,zl,gl).set(F,c);const W=b(this,$Z,Vt).call(this,t);return b(this,zQ,mR).call(this,Z,W),c}addLuminosityFilter(l){let U=V(this,zl,gl).get(l||"luminosity");if(U)return U;let Z,F;if(l?([Z]=b(this,Rc,kQ).call(this,[l]),F=`luminosity_${Z}`):F="luminosity",U=V(this,zl,gl).get(F),U)return V(this,zl,gl).set(l,U),U;const t=`g_${V(this,UZ)}_luminosity_map_${bU(this,ct)._++}`,c=`url(#${t})`;V(this,zl,gl).set(l,c),V(this,zl,gl).set(F,c);const W=b(this,$Z,Vt).call(this,t);return b(this,hR,Ie).call(this,W),l&&b(this,zQ,mR).call(this,Z,W),c}addHighlightHCMFilter(l,U,Z,F,t){var c;const W=`${U}-${Z}-${F}-${t}`;let Q=V(this,qZ,Wt).get(l);if((Q==null?void 0:Q.key)===W||(Q?((c=Q.filter)==null||c.remove(),Q.key=W,Q.url="none",Q.filter=null):(Q={key:W,url:"none",filter:null},V(this,qZ,Wt).set(l,Q)),!U||!Z))return Q.url;const[a,n]=[U,Z].map(b(this,nt,hc).bind(this));let s=Math.round(.2126*a[0]+.7152*a[1]+.0722*a[2]),R=Math.round(.2126*n[0]+.7152*n[1]+.0722*n[2]),[N,h]=[F,t].map(b(this,nt,hc).bind(this));R<s&&([s,R,N,h]=[R,s,h,N]),V(this,BF,Kt).style.color="";const e=(T,G,Y)=>{const S=new Array(256),X=(R-s)/Y,B=T/255,k=(G-T)/(255*Y);let p=0;for(let o=0;o<=Y;o++){const y=Math.round(s+o*X),I=B+o*k;for(let E=p;E<=y;E++)S[E]=I;p=y+1}for(let o=p;o<256;o++)S[o]=S[p-1];return S.join(",")},M=`g_${V(this,UZ)}_hcm_${l}_filter`,J=Q.filter=b(this,$Z,Vt).call(this,M);return b(this,LQ,bR).call(this,J),b(this,at,Nc).call(this,e(N[0],h[0],5),e(N[1],h[1],5),e(N[2],h[2],5),J),Q.url=`url(#${M})`,Q.url}destroy(l=!1){l&&V(this,qZ,Wt).size!==0||(V(this,Ld)&&(V(this,Ld).parentNode.parentNode.remove(),m(this,Ld,null)),V(this,pF)&&(V(this,pF).clear(),m(this,pF,null)),m(this,ct,0))}}pF=new WeakMap,Ld=new WeakMap,UZ=new WeakMap,NU=new WeakMap,yQ=new WeakMap,ct=new WeakMap,zl=new WeakSet,gl=function(){return V(this,pF)||m(this,pF,new Map)},qZ=new WeakSet,Wt=function(){return V(this,yQ)||m(this,yQ,new Map)},BF=new WeakSet,Kt=function(){if(!V(this,Ld)){const d=V(this,NU).createElement("div"),{style:l}=d;l.visibility="hidden",l.contain="strict",l.width=l.height=0,l.position="absolute",l.top=l.left=0,l.zIndex=-1;const U=V(this,NU).createElementNS(ed,"svg");U.setAttribute("width",0),U.setAttribute("height",0),m(this,Ld,V(this,NU).createElementNS(ed,"defs")),d.append(U),U.append(V(this,Ld)),V(this,NU).body.append(d)}return V(this,Ld)},Rc=new WeakSet,kQ=function(d){if(d.length===1){const W=d[0],Q=new Array(256);for(let n=0;n<256;n++)Q[n]=W[n]/255;const a=Q.join(",");return[a,a,a]}const[l,U,Z]=d,F=new Array(256),t=new Array(256),c=new Array(256);for(let W=0;W<256;W++)F[W]=l[W]/255,t[W]=U[W]/255,c[W]=Z[W]/255;return[F.join(","),t.join(","),c.join(",")]},hR=new WeakSet,Ie=function(d){const l=V(this,NU).createElementNS(ed,"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"),d.append(l)},LQ=new WeakSet,bR=function(d){const l=V(this,NU).createElementNS(ed,"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"),d.append(l)},$Z=new WeakSet,Vt=function(d){const l=V(this,NU).createElementNS(ed,"filter");return l.setAttribute("color-interpolation-filters","sRGB"),l.setAttribute("id",d),V(this,BF,Kt).append(l),l},Qt=new WeakSet,y0=function(d,l,U){const Z=V(this,NU).createElementNS(ed,l);Z.setAttribute("type","discrete"),Z.setAttribute("tableValues",U),d.append(Z)},at=new WeakSet,Nc=function(d,l,U,Z){const F=V(this,NU).createElementNS(ed,"feComponentTransfer");Z.append(F),b(this,Qt,y0).call(this,F,"feFuncR",d),b(this,Qt,y0).call(this,F,"feFuncG",l),b(this,Qt,y0).call(this,F,"feFuncB",U)},zQ=new WeakSet,mR=function(d,l){const U=V(this,NU).createElementNS(ed,"feComponentTransfer");l.append(U),b(this,Qt,y0).call(this,U,"feFuncA",d)},nt=new WeakSet,hc=function(d){return V(this,BF,Kt).style.color=d,nb(getComputedStyle(V(this,BF,Kt)).getPropertyValue("color"))};class BJ extends De{constructor({ownerDocument:l=globalThis.document,enableHWA:U=!1}={}){super({enableHWA:U}),this._document=l}_createCanvas(l,U){const Z=this._document.createElement("canvas");return Z.width=l,Z.height=U,Z}}function Ls(d,l="text"){return D(this,null,function*(){if(bc(d,document.baseURI)){const U=yield fetch(d);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 F=new XMLHttpRequest;F.open("GET",d,!0),F.responseType=l,F.onreadystatechange=()=>{if(F.readyState===XMLHttpRequest.DONE){if(F.status===200||F.status===0){switch(l){case"arraybuffer":case"blob":case"json":U(F.response);return}U(F.responseText);return}Z(new Error(F.statusText))}},F.send(null)})})}class Ee extends ys{_fetchData(l,U){return Ls(l,this.isCompressed?"arraybuffer":"text").then(Z=>({cMapData:Z instanceof ArrayBuffer?new Uint8Array(Z):us(Z),compressionType:U}))}}class we extends ks{_fetchData(l){return Ls(l,"arraybuffer").then(U=>new Uint8Array(U))}}let Wb=class extends cb{_createSVG(d){return document.createElementNS(ed,d)}};class lV{constructor({viewBox:l,scale:U,rotation:Z,offsetX:F=0,offsetY:t=0,dontFlip:c=!1}){this.viewBox=l,this.scale=U,this.rotation=Z,this.offsetX=F,this.offsetY=t;const W=(l[2]+l[0])/2,Q=(l[3]+l[1])/2;let a,n,s,R;switch(Z%=360,Z<0&&(Z+=360),Z){case 180:a=-1,n=0,s=0,R=1;break;case 90:a=0,n=1,s=1,R=0;break;case 270:a=0,n=-1,s=-1,R=0;break;case 0:a=1,n=0,s=0,R=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}c&&(s=-s,R=-R);let N,h,e,M;a===0?(N=Math.abs(Q-l[1])*U+F,h=Math.abs(W-l[0])*U+t,e=(l[3]-l[1])*U,M=(l[2]-l[0])*U):(N=Math.abs(W-l[0])*U+F,h=Math.abs(Q-l[1])*U+t,e=(l[2]-l[0])*U,M=(l[3]-l[1])*U),this.transform=[a*U,n*U,s*U,R*U,N-a*U*W-s*U*Q,h-n*U*W-R*U*Q],this.width=e,this.height=M}get rawDims(){const{viewBox:l}=this;return Ul(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:F=this.offsetY,dontFlip:t=!1}={}){return new lV({viewBox:this.viewBox.slice(),scale:l,rotation:U,offsetX:Z,offsetY:F,dontFlip:t})}convertToViewportPoint(l,U){return j.applyTransform([l,U],this.transform)}convertToViewportRectangle(l){const U=j.applyTransform([l[0],l[1]],this.transform),Z=j.applyTransform([l[2],l[3]],this.transform);return[U[0],U[1],Z[0],Z[1]]}convertToPdfPoint(l,U){return j.applyInverseTransform([l,U],this.transform)}}let Vb=class extends zZ{constructor(d,l=0){super(d,"RenderingCancelledException"),this.extraDelay=l}};function Qb(d){const l=d.length;let U=0;for(;U<l&&d[U].trim()==="";)U++;return d.substring(U,U+5).toLowerCase()==="data:"}function ab(d){return typeof d=="string"&&/\.pdf$/i.test(d)}function uJ(d){return[d]=d.split(/[#?]/,1),d.substring(d.lastIndexOf("/")+1)}function oJ(d,l="document.pdf"){if(typeof d!="string")return l;if(Qb(d))return A('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),l;const U=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/,Z=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,F=U.exec(d);let t=Z.exec(F[1])||Z.exec(F[2])||Z.exec(F[3]);if(t&&(t=t[0],t.includes("%")))try{t=Z.exec(decodeURIComponent(t))[0]}catch(c){}return t||l}class yb{constructor(){f(this,"started",Object.create(null)),f(this,"times",[])}time(l){l in this.started&&A(`Timer is already running for ${l}`),this.started[l]=Date.now()}timeEnd(l){l in this.started||A(`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:F,end:t}of this.times)l.push(`${Z.padEnd(U)} ${t-F}ms
|
||
`);return l.join("")}}function bc(d,l){try{const{protocol:U}=l?new URL(d,l):new URL(d);return U==="http:"||U==="https:"}catch(U){return!1}}function iU(d){d.preventDefault()}function Ce(d){console.log("Deprecated API usage: "+d)}let Hs,xe=class{static toDateObject(d){if(!d||typeof d!="string")return null;Hs||(Hs=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const l=Hs.exec(d);if(!l)return null;const U=parseInt(l[1],10);let Z=parseInt(l[2],10);Z=Z>=1&&Z<=12?Z-1:0;let F=parseInt(l[3],10);F=F>=1&&F<=31?F:1;let t=parseInt(l[4],10);t=t>=0&&t<=23?t:0;let c=parseInt(l[5],10);c=c>=0&&c<=59?c:0;let W=parseInt(l[6],10);W=W>=0&&W<=59?W:0;const Q=l[7]||"Z";let a=parseInt(l[8],10);a=a>=0&&a<=23?a:0;let n=parseInt(l[9],10)||0;return n=n>=0&&n<=59?n:0,Q==="-"?(t+=a,c+=n):Q==="+"&&(t-=a,c-=n),new Date(Date.UTC(U,Z,F,t,c,W))}};function yJ(d,{scale:l=1,rotation:U=0}){const{width:Z,height:F}=d.attributes.style,t=[0,0,parseInt(Z),parseInt(F)];return new lV({viewBox:t,scale:l,rotation:U})}function nb(d){if(d.startsWith("#")){const l=parseInt(d.slice(1),16);return[(l&16711680)>>16,(l&65280)>>8,l&255]}return d.startsWith("rgb(")?d.slice(4,-1).split(",").map(l=>parseInt(l)):d.startsWith("rgba(")?d.slice(5,-1).split(",").map(l=>parseInt(l)).slice(0,3):(A(`Not a valid color format: "${d}"`),[0,0,0])}function kJ(d){const l=document.createElement("span");l.style.visibility="hidden",document.body.append(l);for(const U of d.keys()){l.style.color=U;const Z=window.getComputedStyle(l).color;d.set(U,nb(Z))}l.remove()}function sl(d){const{a:l,b:U,c:Z,d:F,e:t,f:c}=d.getTransform();return[l,U,Z,F,t,c]}function ad(d){const{a:l,b:U,c:Z,d:F,e:t,f:c}=d.getTransform().invertSelf();return[l,U,Z,F,t,c]}function IF(d,l,U=!1,Z=!0){if(l instanceof lV){const{pageWidth:F,pageHeight:t}=l.rawDims,{style:c}=d,W=sU.isCSSRoundSupported,Q=`var(--scale-factor) * ${F}px`,a=`var(--scale-factor) * ${t}px`,n=W?`round(${Q}, 1px)`:`calc(${Q})`,s=W?`round(${a}, 1px)`:`calc(${a})`;!U||l.rotation%180===0?(c.width=n,c.height=s):(c.width=s,c.height=n)}Z&&d.setAttribute("data-main-rotation",l.rotation)}var st,it,oU,vt,eR,re,MR,kb,JR,Lb,hW,En,GR,je,DQ,TR;const Oe=class ge{constructor(l){i(this,MR),i(this,JR),i(this,hW),i(this,GR),i(this,DQ),i(this,st,null),i(this,it,null),i(this,oU,void 0),i(this,vt,null),m(this,oU,l)}render(){const l=m(this,st,document.createElement("div"));l.className="editToolbar",l.setAttribute("role","toolbar");const U=V(this,oU)._uiManager._signal;l.addEventListener("contextmenu",iU,{signal:U}),l.addEventListener("pointerdown",b(ge,eR,re),{signal:U});const Z=m(this,vt,document.createElement("div"));Z.className="buttons",l.append(Z);const F=V(this,oU).toolbarPosition;if(F){const{style:t}=l,c=V(this,oU)._uiManager.direction==="ltr"?1-F[0]:F[0];t.insetInlineEnd=`${100*c}%`,t.top=`calc(${100*F[1]}% + var(--editor-toolbar-vert-offset))`}return b(this,GR,je).call(this),l}hide(){var l;V(this,st).classList.add("hidden"),(l=V(this,it))==null||l.hideDropdown()}show(){V(this,st).classList.remove("hidden")}addAltTextButton(l){b(this,hW,En).call(this,l),V(this,vt).prepend(l,V(this,DQ,TR))}addColorPicker(l){m(this,it,l);const U=l.renderButton();b(this,hW,En).call(this,U),V(this,vt).prepend(U,V(this,DQ,TR))}remove(){var l;V(this,st).remove(),(l=V(this,it))==null||l.destroy(),m(this,it,null)}};st=new WeakMap,it=new WeakMap,oU=new WeakMap,vt=new WeakMap,eR=new WeakSet,re=function(d){d.stopPropagation()},MR=new WeakSet,kb=function(d){V(this,oU)._focusEventsAllowed=!1,d.preventDefault(),d.stopPropagation()},JR=new WeakSet,Lb=function(d){V(this,oU)._focusEventsAllowed=!0,d.preventDefault(),d.stopPropagation()},hW=new WeakSet,En=function(d){const l=V(this,oU)._uiManager._signal;d.addEventListener("focusin",b(this,MR,kb).bind(this),{capture:!0,signal:l}),d.addEventListener("focusout",b(this,JR,Lb).bind(this),{capture:!0,signal:l}),d.addEventListener("contextmenu",iU,{signal:l})},GR=new WeakSet,je=function(){const d=document.createElement("button");d.className="delete",d.tabIndex=0,d.setAttribute("data-l10n-id",`pdfjs-editor-remove-${V(this,oU).editorType}-button`),b(this,hW,En).call(this,d),d.addEventListener("click",l=>{V(this,oU)._uiManager.delete()},{signal:V(this,oU)._uiManager._signal}),V(this,vt).append(d)},DQ=new WeakSet,TR=function(){const d=document.createElement("div");return d.className="divider",d},i(Oe,eR);let LJ=Oe;var IQ,JF,Ht,SR,Ke,XR,ve,YR,zb;class zJ{constructor(l){i(this,SR),i(this,XR),i(this,YR),i(this,IQ,null),i(this,JF,null),i(this,Ht,void 0),m(this,Ht,l)}show(l,U,Z){const[F,t]=b(this,XR,ve).call(this,U,Z),{style:c}=V(this,JF)||m(this,JF,b(this,SR,Ke).call(this));l.append(V(this,JF)),c.insetInlineEnd=`${100*F}%`,c.top=`calc(${100*t}% + var(--editor-toolbar-vert-offset))`}hide(){V(this,JF).remove()}}IQ=new WeakMap,JF=new WeakMap,Ht=new WeakMap,SR=new WeakSet,Ke=function(){const d=m(this,JF,document.createElement("div"));d.className="editToolbar",d.setAttribute("role","toolbar"),d.addEventListener("contextmenu",iU,{signal:V(this,Ht)._signal});const l=m(this,IQ,document.createElement("div"));return l.className="buttons",d.append(l),b(this,YR,zb).call(this),d},XR=new WeakSet,ve=function(d,l){let U=0,Z=0;for(const F of d){const t=F.y+F.height;if(t<U)continue;const c=F.x+(l?F.width:0);if(t>U){Z=c,U=t;continue}l?c>Z&&(Z=c):c<Z&&(Z=c)}return[l?1-Z:Z,U]},YR=new WeakSet,zb=function(){const d=document.createElement("button");d.className="highlightButton",d.tabIndex=0,d.setAttribute("data-l10n-id","pdfjs-highlight-floating-button1");const l=document.createElement("span");d.append(l),l.className="visuallyHidden",l.setAttribute("data-l10n-id","pdfjs-highlight-floating-button-label");const U=V(this,Ht)._signal;d.addEventListener("contextmenu",iU,{signal:U}),d.addEventListener("click",()=>{V(this,Ht).highlightSelection("floating_button")},{signal:U}),V(this,IQ).append(d)};function wn(d,l,U){for(const Z of U)l.addEventListener(Z,d[Z].bind(d))}function DJ(d){return Math.round(Math.min(255,Math.max(1,255*d))).toString(16).padStart(2,"0")}var pR;class IJ{constructor(){i(this,pR,0)}get id(){return`${sJ}${bU(this,pR)._++}`}}pR=new WeakMap;var Cn,BR,aU,EQ,uR;const He=class{constructor(){i(this,EQ),i(this,Cn,XJ()),i(this,BR,0),i(this,aU,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",{willReadFrequently:!0}),Z=new Image;Z.src=l;const F=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 Ul(this,"_isSVGFittingCanvas",F)}getFromFile(l){return D(this,null,function*(){const{lastModified:U,name:Z,size:F,type:t}=l;return b(this,EQ,uR).call(this,`${U}_${Z}_${F}_${t}`,l)})}getFromUrl(l){return D(this,null,function*(){return b(this,EQ,uR).call(this,l,l)})}getFromId(l){return D(this,null,function*(){V(this,aU)||m(this,aU,new Map);const U=V(this,aU).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=V(this,aU).get(l);return U!=null&&U.isSvg?U.svgUrl:null}deleteId(l){V(this,aU)||m(this,aU,new Map);const U=V(this,aU).get(l);U&&(U.refCounter-=1,U.refCounter===0&&(U.bitmap=null))}isValidId(l){return l.startsWith(`image_${V(this,Cn)}_`)}};Cn=new WeakMap,BR=new WeakMap,aU=new WeakMap,EQ=new WeakSet,uR=function(d,l){return D(this,null,function*(){V(this,aU)||m(this,aU,new Map);let U=V(this,aU).get(d);if(U===null)return null;if(U!=null&&U.bitmap)return U.refCounter+=1,U;try{U||(U={bitmap:null,id:`image_${V(this,Cn)}_${bU(this,BR)._++}`,refCounter:0,isSvg:!1});let Z;if(typeof l=="string"?(U.url=l,Z=yield Ls(l,"blob")):Z=U.file=l,Z.type==="image/svg+xml"){const F=He._isSVGFittingCanvas,t=new FileReader,c=new Image,W=new Promise((Q,a)=>{c.onload=()=>{U.bitmap=c,U.isSvg=!0,Q()},t.onload=()=>D(this,null,function*(){const n=U.svgUrl=t.result;c.src=(yield F)?`${n}#svgView(preserveAspectRatio(none))`:n}),c.onerror=t.onerror=a});t.readAsDataURL(Z),yield W}else U.bitmap=yield createImageBitmap(Z);U.refCounter=1}catch(Z){console.error(Z),U=null}return V(this,aU).set(d,U),U&&V(this,aU).set(U.id,U),U})};let EJ=He;var Dl,lF,wQ,Gl;class wJ{constructor(l=128){i(this,Dl,[]),i(this,lF,!1),i(this,wQ,void 0),i(this,Gl,-1),m(this,wQ,l)}add({cmd:l,undo:U,post:Z,mustExec:F,type:t=NaN,overwriteIfSameType:c=!1,keepUndo:W=!1}){if(F&&l(),V(this,lF))return;const Q={cmd:l,undo:U,post:Z,type:t};if(V(this,Gl)===-1){V(this,Dl).length>0&&(V(this,Dl).length=0),m(this,Gl,0),V(this,Dl).push(Q);return}if(c&&V(this,Dl)[V(this,Gl)].type===t){W&&(Q.undo=V(this,Dl)[V(this,Gl)].undo),V(this,Dl)[V(this,Gl)]=Q;return}const a=V(this,Gl)+1;a===V(this,wQ)?V(this,Dl).splice(0,1):(m(this,Gl,a),a<V(this,Dl).length&&V(this,Dl).splice(a)),V(this,Dl).push(Q)}undo(){if(V(this,Gl)===-1)return;m(this,lF,!0);const{undo:l,post:U}=V(this,Dl)[V(this,Gl)];l(),U==null||U(),m(this,lF,!1),m(this,Gl,V(this,Gl)-1)}redo(){if(V(this,Gl)<V(this,Dl).length-1){m(this,Gl,V(this,Gl)+1),m(this,lF,!0);const{cmd:l,post:U}=V(this,Dl)[V(this,Gl)];l(),U==null||U(),m(this,lF,!1)}}hasSomethingToUndo(){return V(this,Gl)!==-1}hasSomethingToRedo(){return V(this,Gl)<V(this,Dl).length-1}destroy(){m(this,Dl,null)}}Dl=new WeakMap,lF=new WeakMap,wQ=new WeakMap,Gl=new WeakMap;var oR,Pe;class UV{constructor(l){i(this,oR),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:U}=sU.platform;for(const[Z,F,t={}]of l)for(const c of Z){const W=c.startsWith("mac+");U&&W?(this.callbacks.set(c.slice(4),{callback:F,options:t}),this.allKeys.add(c.split("+").at(-1))):!U&&!W&&(this.callbacks.set(c,{callback:F,options:t}),this.allKeys.add(c.split("+").at(-1)))}}exec(l,U){if(!this.allKeys.has(U.key))return;const Z=this.callbacks.get(b(this,oR,Pe).call(this,U));if(!Z)return;const{callback:F,options:{bubbles:t=!1,args:c=[],checker:W=null}}=Z;W&&!W(l,U)||(F.bind(l,...c,U)(),t||(U.stopPropagation(),U.preventDefault()))}}oR=new WeakSet,Pe=function(d){d.altKey&&this.buffer.push("alt"),d.ctrlKey&&this.buffer.push("ctrl"),d.metaKey&&this.buffer.push("meta"),d.shiftKey&&this.buffer.push("shift"),this.buffer.push(d.key);const l=this.buffer.join("+");return this.buffer.length=0,l};const fe=class Ae{get _colors(){const l=new Map([["CanvasText",null],["Canvas",null]]);return kJ(l),Ul(this,"_colors",l)}convert(l){const U=nb(l);if(!window.matchMedia("(forced-colors: active)").matches)return U;for(const[Z,F]of this._colors)if(F.every((t,c)=>t===U[c]))return Ae._colorsMapping.get(Z);return U}getHexCode(l){const U=this._colors.get(l);return U?j.makeHexColor(...U):l}};f(fe,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let CJ=fe;var k0,mU,pl,xl,L0,Kd,gF,OU,z0,KF,nd,gU,vF,nV,sV,sd,D0,EZ,KU,Ps,wZ,iV,HF,RV,I0,rl,Fl,vd,PF,E0,NV,hV,bV,mV,eV,MV,JV,GV,TV,SV,XV,YV,CZ,id,Hd,pV,fF,w0,BV,fs,Db,As,Ib,C0,uV,_s,Eb,qs,wb,$s,Cb,oV,li,Ui,xb,yV,di,kV,Zi,Fi,rb,jl,$l,Rd,Pd,ti,jb,ci,Ob,LV,Wi,Vi,gb,AF,x0,zV,Qi;let fW=(fF=class{constructor(d,l,U,Z,F,t,c,W,Q){i(this,w0),i(this,fs),i(this,As),i(this,C0),i(this,_s),i(this,qs),i(this,$s),i(this,oV),i(this,Ui),i(this,yV),i(this,kV),i(this,Fi),i(this,jl),i(this,Rd),i(this,ti),i(this,ci),i(this,LV),i(this,Vi),i(this,AF),i(this,zV),i(this,k0,new AbortController),i(this,mU,null),i(this,pl,new Map),i(this,xl,new Map),i(this,L0,null),i(this,Kd,null),i(this,gF,null),i(this,OU,new wJ),i(this,z0,0),i(this,KF,new Set),i(this,nd,null),i(this,gU,null),i(this,vF,new Set),i(this,nV,!1),i(this,sV,null),i(this,sd,null),i(this,D0,null),i(this,EZ,!1),i(this,KU,null),i(this,Ps,new IJ),i(this,wZ,!1),i(this,iV,!1),i(this,HF,null),i(this,RV,null),i(this,I0,null),i(this,rl,ll.NONE),i(this,Fl,new Set),i(this,vd,null),i(this,PF,null),i(this,E0,null),i(this,NV,this.blur.bind(this)),i(this,hV,this.focus.bind(this)),i(this,bV,this.copy.bind(this)),i(this,mV,this.cut.bind(this)),i(this,eV,this.paste.bind(this)),i(this,MV,this.keydown.bind(this)),i(this,JV,this.keyup.bind(this)),i(this,GV,this.onEditingAction.bind(this)),i(this,TV,this.onPageChanging.bind(this)),i(this,SV,this.onScaleChanging.bind(this)),i(this,XV,this.onRotationChanging.bind(this)),i(this,YV,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),i(this,CZ,[0,0]),i(this,id,null),i(this,Hd,null),i(this,pV,null),this._signal=V(this,k0).signal,m(this,Hd,d),m(this,pV,l),m(this,L0,U),this._eventBus=Z,this._eventBus._on("editingaction",V(this,GV)),this._eventBus._on("pagechanging",V(this,TV)),this._eventBus._on("scalechanging",V(this,SV)),this._eventBus._on("rotationchanging",V(this,XV)),b(this,_s,Eb).call(this),b(this,Fi,rb).call(this),b(this,oV,li).call(this),m(this,Kd,F.annotationStorage),m(this,sV,F.filterFactory),m(this,PF,t),m(this,D0,c||null),m(this,nV,W),m(this,I0,Q||null),this.viewParameters={realScale:Y0.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1}static get _keyboardManager(){const d=fF.prototype,l=t=>V(t,Hd).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&t.hasSomethingToControl(),U=(t,{target:c})=>{if(c instanceof HTMLInputElement){const{type:W}=c;return W!=="text"&&W!=="number"}return!0},Z=this.TRANSLATE_SMALL,F=this.TRANSLATE_BIG;return Ul(this,"_keyboardManager",new UV([[["ctrl+a","mac+meta+a"],d.selectAll,{checker:U}],[["ctrl+z","mac+meta+z"],d.undo,{checker:U}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],d.redo,{checker:U}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],d.delete,{checker:U}],[["Enter","mac+Enter"],d.addNewEditorFromKeyboard,{checker:(t,{target:c})=>!(c instanceof HTMLButtonElement)&&V(t,Hd).contains(c)&&!t.isEnterHandled}],[[" ","mac+ "],d.addNewEditorFromKeyboard,{checker:(t,{target:c})=>!(c instanceof HTMLButtonElement)&&V(t,Hd).contains(document.activeElement)}],[["Escape","mac+Escape"],d.unselectAll],[["ArrowLeft","mac+ArrowLeft"],d.translateSelectedEditors,{args:[-Z,0],checker:l}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],d.translateSelectedEditors,{args:[-F,0],checker:l}],[["ArrowRight","mac+ArrowRight"],d.translateSelectedEditors,{args:[Z,0],checker:l}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],d.translateSelectedEditors,{args:[F,0],checker:l}],[["ArrowUp","mac+ArrowUp"],d.translateSelectedEditors,{args:[0,-Z],checker:l}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],d.translateSelectedEditors,{args:[0,-F],checker:l}],[["ArrowDown","mac+ArrowDown"],d.translateSelectedEditors,{args:[0,Z],checker:l}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],d.translateSelectedEditors,{args:[0,F],checker:l}]]))}destroy(){var d,l,U;(d=V(this,k0))==null||d.abort(),m(this,k0,null),this._signal=null,this._eventBus._off("editingaction",V(this,GV)),this._eventBus._off("pagechanging",V(this,TV)),this._eventBus._off("scalechanging",V(this,SV)),this._eventBus._off("rotationchanging",V(this,XV));for(const Z of V(this,xl).values())Z.destroy();V(this,xl).clear(),V(this,pl).clear(),V(this,vF).clear(),m(this,mU,null),V(this,Fl).clear(),V(this,OU).destroy(),(l=V(this,L0))==null||l.destroy(),(U=V(this,KU))==null||U.hide(),m(this,KU,null),V(this,sd)&&(clearTimeout(V(this,sd)),m(this,sd,null)),V(this,id)&&(clearTimeout(V(this,id)),m(this,id,null))}mlGuess(d){return D(this,null,function*(){var l;return((l=V(this,I0))==null?void 0:l.guess(d))||null})}get hasMLManager(){return!!V(this,I0)}get hcmFilter(){return Ul(this,"hcmFilter",V(this,PF)?V(this,sV).addHCMFilter(V(this,PF).foreground,V(this,PF).background):"none")}get direction(){return Ul(this,"direction",getComputedStyle(V(this,Hd)).direction)}get highlightColors(){return Ul(this,"highlightColors",V(this,D0)?new Map(V(this,D0).split(",").map(d=>d.split("=").map(l=>l.trim()))):null)}get highlightColorNames(){return Ul(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,d=>d.reverse())):null)}setMainHighlightColorPicker(d){m(this,RV,d)}editAltText(d){var l;(l=V(this,L0))==null||l.editAltText(this,d)}onPageChanging({pageNumber:d}){m(this,z0,d-1)}focusMainContainer(){V(this,Hd).focus()}findParent(d,l){for(const U of V(this,xl).values()){const{x:Z,y:F,width:t,height:c}=U.div.getBoundingClientRect();if(d>=Z&&d<=Z+t&&l>=F&&l<=F+c)return U}return null}disableUserSelect(d=!1){V(this,pV).classList.toggle("noUserSelect",d)}addShouldRescale(d){V(this,vF).add(d)}removeShouldRescale(d){V(this,vF).delete(d)}onScaleChanging({scale:d}){this.commitOrRemove(),this.viewParameters.realScale=d*Y0.PDF_TO_CSS_UNITS;for(const l of V(this,vF))l.onScaleChanging()}onRotationChanging({pagesRotation:d}){this.commitOrRemove(),this.viewParameters.rotation=d}highlightSelection(d=""){const l=document.getSelection();if(!l||l.isCollapsed)return;const{anchorNode:U,anchorOffset:Z,focusNode:F,focusOffset:t}=l,c=l.toString(),W=b(this,w0,BV).call(this,l).closest(".textLayer"),Q=this.getSelectionBoxes(W);if(Q){l.empty(),V(this,rl)===ll.NONE&&(this._eventBus.dispatch("showannotationeditorui",{source:this,mode:ll.HIGHLIGHT}),this.showAllEditors("highlight",!0,!0));for(const a of V(this,xl).values())if(a.hasTextLayer(W)){a.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:d,boxes:Q,anchorNode:U,anchorOffset:Z,focusNode:F,focusOffset:t,text:c});break}}}addToAnnotationStorage(d){!d.isEmpty()&&V(this,Kd)&&!V(this,Kd).has(d.id)&&V(this,Kd).setValue(d.id,d)}blur(){if(this.isShiftKeyDown=!1,V(this,EZ)&&(m(this,EZ,!1),b(this,C0,uV).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:d}=document;for(const l of V(this,Fl))if(l.div.contains(d)){m(this,HF,[l,d]),l._focusEventsAllowed=!1;break}}focus(){if(!V(this,HF))return;const[d,l]=V(this,HF);m(this,HF,null),l.addEventListener("focusin",()=>{d._focusEventsAllowed=!0},{once:!0,signal:this._signal}),l.focus()}addEditListeners(){b(this,oV,li).call(this),b(this,yV,di).call(this)}removeEditListeners(){b(this,Ui,xb).call(this),b(this,kV,Zi).call(this)}dragOver(d){for(const{type:l}of d.dataTransfer.items)for(const U of V(this,gU))if(U.isHandlingMimeForPasting(l)){d.dataTransfer.dropEffect="copy",d.preventDefault();return}}drop(d){for(const l of d.dataTransfer.items)for(const U of V(this,gU))if(U.isHandlingMimeForPasting(l.type)){U.paste(l,this.currentLayer),d.preventDefault();return}}copy(d){var l;if(d.preventDefault(),(l=V(this,mU))==null||l.commitOrRemove(),!this.hasSelection)return;const U=[];for(const Z of V(this,Fl)){const F=Z.serialize(!0);F&&U.push(F)}U.length!==0&&d.clipboardData.setData("application/pdfjs",JSON.stringify(U))}cut(d){this.copy(d),this.delete()}paste(d){d.preventDefault();const{clipboardData:l}=d;for(const F of l.items)for(const t of V(this,gU))if(t.isHandlingMimeForPasting(F.type)){t.paste(F,this.currentLayer);return}let U=l.getData("application/pdfjs");if(!U)return;try{U=JSON.parse(U)}catch(F){A(`paste: "${F.message}".`);return}if(!Array.isArray(U))return;this.unselectAll();const Z=this.currentLayer;try{const F=[];for(const W of U){const Q=Z.deserialize(W);if(!Q)return;F.push(Q)}const t=()=>{for(const W of F)b(this,LV,Wi).call(this,W);b(this,zV,Qi).call(this,F)},c=()=>{for(const W of F)W.remove()};this.addCommands({cmd:t,undo:c,mustExec:!0})}catch(F){A(`paste: "${F.message}".`)}}keydown(d){!this.isShiftKeyDown&&d.key==="Shift"&&(this.isShiftKeyDown=!0),V(this,rl)!==ll.NONE&&!this.isEditorHandlingKeyboard&&fF._keyboardManager.exec(this,d)}keyup(d){this.isShiftKeyDown&&d.key==="Shift"&&(this.isShiftKeyDown=!1,V(this,EZ)&&(m(this,EZ,!1),b(this,C0,uV).call(this,"main_toolbar")))}onEditingAction({name:d}){switch(d){case"undo":case"redo":case"delete":case"selectAll":this[d]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(d){d?(b(this,qs,wb).call(this),b(this,yV,di).call(this),b(this,jl,$l).call(this,{isEditing:V(this,rl)!==ll.NONE,isEmpty:b(this,AF,x0).call(this),hasSomethingToUndo:V(this,OU).hasSomethingToUndo(),hasSomethingToRedo:V(this,OU).hasSomethingToRedo(),hasSelectedEditor:!1})):(b(this,$s,Cb).call(this),b(this,kV,Zi).call(this),b(this,jl,$l).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(d){if(!V(this,gU)){m(this,gU,d);for(const l of V(this,gU))b(this,Rd,Pd).call(this,l.defaultPropertiesToUpdate)}}getId(){return V(this,Ps).id}get currentLayer(){return V(this,xl).get(V(this,z0))}getLayer(d){return V(this,xl).get(d)}get currentPageIndex(){return V(this,z0)}addLayer(d){V(this,xl).set(d.pageIndex,d),V(this,wZ)?d.enable():d.disable()}removeLayer(d){V(this,xl).delete(d.pageIndex)}updateMode(d,l=null,U=!1){if(V(this,rl)!==d){if(m(this,rl,d),d===ll.NONE){this.setEditingState(!1),b(this,ci,Ob).call(this);return}this.setEditingState(!0),b(this,ti,jb).call(this),this.unselectAll();for(const Z of V(this,xl).values())Z.updateMode(d);if(!l&&U){this.addNewEditorFromKeyboard();return}if(l){for(const Z of V(this,pl).values())if(Z.annotationElementId===l){this.setSelected(Z),Z.enterInEditMode();break}}}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(d){d!==V(this,rl)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:d})}updateParams(d,l){var U;if(V(this,gU)){switch(d){case P.CREATE:this.currentLayer.addNewEditor();return;case P.HIGHLIGHT_DEFAULT_COLOR:(U=V(this,RV))==null||U.updateColor(l);break;case P.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(V(this,E0)||m(this,E0,new Map)).set(d,l),this.showAllEditors("highlight",l);break}for(const Z of V(this,Fl))Z.updateParams(d,l);for(const Z of V(this,gU))Z.updateDefaultParams(d,l)}}showAllEditors(d,l,U=!1){var F;var Z;for(const t of V(this,pl).values())t.editorType===d&&t.show(l);((F=(Z=V(this,E0))==null?void 0:Z.get(P.HIGHLIGHT_SHOW_ALL))!=null?F:!0)!==l&&b(this,Rd,Pd).call(this,[[P.HIGHLIGHT_SHOW_ALL,l]])}enableWaiting(d=!1){if(V(this,iV)!==d){m(this,iV,d);for(const l of V(this,xl).values())d?l.disableClick():l.enableClick(),l.div.classList.toggle("waiting",d)}}getEditors(d){const l=[];for(const U of V(this,pl).values())U.pageIndex===d&&l.push(U);return l}getEditor(d){return V(this,pl).get(d)}addEditor(d){V(this,pl).set(d.id,d)}removeEditor(d){var l;d.div.contains(document.activeElement)&&(V(this,sd)&&clearTimeout(V(this,sd)),m(this,sd,setTimeout(()=>{this.focusMainContainer(),m(this,sd,null)},0))),V(this,pl).delete(d.id),this.unselect(d),(!d.annotationElementId||!V(this,KF).has(d.annotationElementId))&&((l=V(this,Kd))==null||l.remove(d.id))}addDeletedAnnotationElement(d){V(this,KF).add(d.annotationElementId),this.addChangedExistingAnnotation(d),d.deleted=!0}isDeletedAnnotationElement(d){return V(this,KF).has(d)}removeDeletedAnnotationElement(d){V(this,KF).delete(d.annotationElementId),this.removeChangedExistingAnnotation(d),d.deleted=!1}setActiveEditor(d){V(this,mU)!==d&&(m(this,mU,d),d&&b(this,Rd,Pd).call(this,d.propertiesToUpdate))}updateUI(d){V(this,Vi,gb)===d&&b(this,Rd,Pd).call(this,d.propertiesToUpdate)}toggleSelected(d){if(V(this,Fl).has(d)){V(this,Fl).delete(d),d.unselect(),b(this,jl,$l).call(this,{hasSelectedEditor:this.hasSelection});return}V(this,Fl).add(d),d.select(),b(this,Rd,Pd).call(this,d.propertiesToUpdate),b(this,jl,$l).call(this,{hasSelectedEditor:!0})}setSelected(d){for(const l of V(this,Fl))l!==d&&l.unselect();V(this,Fl).clear(),V(this,Fl).add(d),d.select(),b(this,Rd,Pd).call(this,d.propertiesToUpdate),b(this,jl,$l).call(this,{hasSelectedEditor:!0})}isSelected(d){return V(this,Fl).has(d)}get firstSelectedEditor(){return V(this,Fl).values().next().value}unselect(d){d.unselect(),V(this,Fl).delete(d),b(this,jl,$l).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return V(this,Fl).size!==0}get isEnterHandled(){return V(this,Fl).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){V(this,OU).undo(),b(this,jl,$l).call(this,{hasSomethingToUndo:V(this,OU).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:b(this,AF,x0).call(this)})}redo(){V(this,OU).redo(),b(this,jl,$l).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:V(this,OU).hasSomethingToRedo(),isEmpty:b(this,AF,x0).call(this)})}addCommands(d){V(this,OU).add(d),b(this,jl,$l).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:b(this,AF,x0).call(this)})}delete(){if(this.commitOrRemove(),!this.hasSelection)return;const d=[...V(this,Fl)],l=()=>{for(const Z of d)Z.remove()},U=()=>{for(const Z of d)b(this,LV,Wi).call(this,Z)};this.addCommands({cmd:l,undo:U,mustExec:!0})}commitOrRemove(){var d;(d=V(this,mU))==null||d.commitOrRemove()}hasSomethingToControl(){return V(this,mU)||this.hasSelection}selectAll(){for(const d of V(this,Fl))d.commit();b(this,zV,Qi).call(this,V(this,pl).values())}unselectAll(){if(!(V(this,mU)&&(V(this,mU).commitOrRemove(),V(this,rl)!==ll.NONE))&&this.hasSelection){for(const d of V(this,Fl))d.unselect();V(this,Fl).clear(),b(this,jl,$l).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(d,l,U=!1){if(U||this.commitOrRemove(),!this.hasSelection)return;V(this,CZ)[0]+=d,V(this,CZ)[1]+=l;const[Z,F]=V(this,CZ),t=[...V(this,Fl)];V(this,id)&&clearTimeout(V(this,id)),m(this,id,setTimeout(()=>{m(this,id,null),V(this,CZ)[0]=V(this,CZ)[1]=0,this.addCommands({cmd:()=>{for(const W of t)V(this,pl).has(W.id)&&W.translateInPage(Z,F)},undo:()=>{for(const W of t)V(this,pl).has(W.id)&&W.translateInPage(-Z,-F)},mustExec:!1})},1e3));for(const W of t)W.translateInPage(d,l)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),m(this,nd,new Map);for(const d of V(this,Fl))V(this,nd).set(d,{savedX:d.x,savedY:d.y,savedPageIndex:d.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!V(this,nd))return!1;this.disableUserSelect(!1);const d=V(this,nd);m(this,nd,null);let l=!1;for(const[{x:Z,y:F,pageIndex:t},c]of d)c.newX=Z,c.newY=F,c.newPageIndex=t,l||(l=Z!==c.savedX||F!==c.savedY||t!==c.savedPageIndex);if(!l)return!1;const U=(Z,F,t,c)=>{if(V(this,pl).has(Z.id)){const W=V(this,xl).get(c);W?Z._setParentAndPosition(W,F,t):(Z.pageIndex=c,Z.x=F,Z.y=t)}};return this.addCommands({cmd:()=>{for(const[Z,{newX:F,newY:t,newPageIndex:c}]of d)U(Z,F,t,c)},undo:()=>{for(const[Z,{savedX:F,savedY:t,savedPageIndex:c}]of d)U(Z,F,t,c)},mustExec:!0}),!0}dragSelectedEditors(d,l){if(V(this,nd))for(const U of V(this,nd).keys())U.drag(d,l)}rebuild(d){if(d.parent===null){const l=this.getLayer(d.pageIndex);l?(l.changeParent(d),l.addOrRebuild(d)):(this.addEditor(d),this.addToAnnotationStorage(d),d.rebuild())}else d.parent.addOrRebuild(d)}get isEditorHandlingKeyboard(){var d;return((d=this.getActive())==null?void 0:d.shouldGetKeyboardEvents())||V(this,Fl).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(d){return V(this,mU)===d}getActive(){return V(this,mU)}getMode(){return V(this,rl)}get imageManager(){return Ul(this,"imageManager",new EJ)}getSelectionBoxes(d){if(!d)return null;const l=document.getSelection();for(let Q=0,a=l.rangeCount;Q<a;Q++)if(!d.contains(l.getRangeAt(Q).commonAncestorContainer))return null;const{x:U,y:Z,width:F,height:t}=d.getBoundingClientRect();let c;switch(d.getAttribute("data-main-rotation")){case"90":c=(Q,a,n,s)=>({x:(a-Z)/t,y:1-(Q+n-U)/F,width:s/t,height:n/F});break;case"180":c=(Q,a,n,s)=>({x:1-(Q+n-U)/F,y:1-(a+s-Z)/t,width:n/F,height:s/t});break;case"270":c=(Q,a,n,s)=>({x:1-(a+s-Z)/t,y:(Q-U)/F,width:s/t,height:n/F});break;default:c=(Q,a,n,s)=>({x:(Q-U)/F,y:(a-Z)/t,width:n/F,height:s/t});break}const W=[];for(let Q=0,a=l.rangeCount;Q<a;Q++){const n=l.getRangeAt(Q);if(!n.collapsed)for(const{x:s,y:R,width:N,height:h}of n.getClientRects())N===0||h===0||W.push(c(s,R,N,h))}return W.length===0?null:W}addChangedExistingAnnotation({annotationElementId:d,id:l}){(V(this,gF)||m(this,gF,new Map)).set(d,l)}removeChangedExistingAnnotation({annotationElementId:d}){var l;(l=V(this,gF))==null||l.delete(d)}renderAnnotationElement(d){var l;const U=(l=V(this,gF))==null?void 0:l.get(d.data.id);if(!U)return;const Z=V(this,Kd).getRawValue(U);Z&&(V(this,rl)===ll.NONE&&!Z.hasBeenModified||Z.renderAnnotationElement(d))}},k0=new WeakMap,mU=new WeakMap,pl=new WeakMap,xl=new WeakMap,L0=new WeakMap,Kd=new WeakMap,gF=new WeakMap,OU=new WeakMap,z0=new WeakMap,KF=new WeakMap,nd=new WeakMap,gU=new WeakMap,vF=new WeakMap,nV=new WeakMap,sV=new WeakMap,sd=new WeakMap,D0=new WeakMap,EZ=new WeakMap,KU=new WeakMap,Ps=new WeakMap,wZ=new WeakMap,iV=new WeakMap,HF=new WeakMap,RV=new WeakMap,I0=new WeakMap,rl=new WeakMap,Fl=new WeakMap,vd=new WeakMap,PF=new WeakMap,E0=new WeakMap,NV=new WeakMap,hV=new WeakMap,bV=new WeakMap,mV=new WeakMap,eV=new WeakMap,MV=new WeakMap,JV=new WeakMap,GV=new WeakMap,TV=new WeakMap,SV=new WeakMap,XV=new WeakMap,YV=new WeakMap,CZ=new WeakMap,id=new WeakMap,Hd=new WeakMap,pV=new WeakMap,w0=new WeakSet,BV=function({anchorNode:d}){return d.nodeType===Node.TEXT_NODE?d.parentElement:d},fs=new WeakSet,Db=function(){const d=document.getSelection();if(!d||d.isCollapsed)return;const l=b(this,w0,BV).call(this,d).closest(".textLayer"),U=this.getSelectionBoxes(l);U&&(V(this,KU)||m(this,KU,new zJ(this)),V(this,KU).show(l,U,this.direction==="ltr"))},As=new WeakSet,Ib=function(){var d,l,U;const Z=document.getSelection();if(!Z||Z.isCollapsed){V(this,vd)&&((d=V(this,KU))==null||d.hide(),m(this,vd,null),b(this,jl,$l).call(this,{hasSelectedText:!1}));return}const{anchorNode:F}=Z;if(F!==V(this,vd)){if(!b(this,w0,BV).call(this,Z).closest(".textLayer")){V(this,vd)&&((l=V(this,KU))==null||l.hide(),m(this,vd,null),b(this,jl,$l).call(this,{hasSelectedText:!1}));return}if((U=V(this,KU))==null||U.hide(),m(this,vd,F),b(this,jl,$l).call(this,{hasSelectedText:!0}),!(V(this,rl)!==ll.HIGHLIGHT&&V(this,rl)!==ll.NONE)&&(V(this,rl)===ll.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),m(this,EZ,this.isShiftKeyDown),!this.isShiftKeyDown)){const t=this._signal,c=W=>{W.type==="pointerup"&&W.button!==0||(window.removeEventListener("pointerup",c),window.removeEventListener("blur",c),W.type==="pointerup"&&b(this,C0,uV).call(this,"main_toolbar"))};window.addEventListener("pointerup",c,{signal:t}),window.addEventListener("blur",c,{signal:t})}}},C0=new WeakSet,uV=function(d=""){V(this,rl)===ll.HIGHLIGHT?this.highlightSelection(d):V(this,nV)&&b(this,fs,Db).call(this)},_s=new WeakSet,Eb=function(){document.addEventListener("selectionchange",b(this,As,Ib).bind(this),{signal:this._signal})},qs=new WeakSet,wb=function(){const d=this._signal;window.addEventListener("focus",V(this,hV),{signal:d}),window.addEventListener("blur",V(this,NV),{signal:d})},$s=new WeakSet,Cb=function(){window.removeEventListener("focus",V(this,hV)),window.removeEventListener("blur",V(this,NV))},oV=new WeakSet,li=function(){const d=this._signal;window.addEventListener("keydown",V(this,MV),{signal:d}),window.addEventListener("keyup",V(this,JV),{signal:d})},Ui=new WeakSet,xb=function(){window.removeEventListener("keydown",V(this,MV)),window.removeEventListener("keyup",V(this,JV))},yV=new WeakSet,di=function(){const d=this._signal;document.addEventListener("copy",V(this,bV),{signal:d}),document.addEventListener("cut",V(this,mV),{signal:d}),document.addEventListener("paste",V(this,eV),{signal:d})},kV=new WeakSet,Zi=function(){document.removeEventListener("copy",V(this,bV)),document.removeEventListener("cut",V(this,mV)),document.removeEventListener("paste",V(this,eV))},Fi=new WeakSet,rb=function(){const d=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:d}),document.addEventListener("drop",this.drop.bind(this),{signal:d})},jl=new WeakSet,$l=function(d){Object.entries(d).some(([l,U])=>V(this,YV)[l]!==U)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(V(this,YV),d)}),V(this,rl)===ll.HIGHLIGHT&&d.hasSelectedEditor===!1&&b(this,Rd,Pd).call(this,[[P.HIGHLIGHT_FREE,!0]]))},Rd=new WeakSet,Pd=function(d){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:d})},ti=new WeakSet,jb=function(){if(!V(this,wZ)){m(this,wZ,!0);for(const d of V(this,xl).values())d.enable();for(const d of V(this,pl).values())d.enable()}},ci=new WeakSet,Ob=function(){if(this.unselectAll(),V(this,wZ)){m(this,wZ,!1);for(const d of V(this,xl).values())d.disable();for(const d of V(this,pl).values())d.disable()}},LV=new WeakSet,Wi=function(d){const l=V(this,xl).get(d.pageIndex);l?l.addOrRebuild(d):(this.addEditor(d),this.addToAnnotationStorage(d))},Vi=new WeakSet,gb=function(){let d=null;for(d of V(this,Fl));return d},AF=new WeakSet,x0=function(){if(V(this,pl).size===0)return!0;if(V(this,pl).size===1)for(const d of V(this,pl).values())return d.isEmpty();return!1},zV=new WeakSet,Qi=function(d){for(const l of V(this,Fl))l.unselect();V(this,Fl).clear();for(const l of d)l.isEmpty()||(V(this,Fl).add(l),l.select());b(this,jl,$l).call(this,{hasSelectedEditor:this.hasSelection})},f(fF,"TRANSLATE_SMALL",1),f(fF,"TRANSLATE_BIG",10),fF);var bZ,mZ,_U,aZ,YU,mc,Zd,CQ,yR;const xQ=class rQ{constructor(l){i(this,CQ),i(this,bZ,""),i(this,mZ,!1),i(this,_U,null),i(this,aZ,null),i(this,YU,null),i(this,mc,!1),i(this,Zd,null),m(this,Zd,l)}static initialize(l){rQ._l10nPromise||(rQ._l10nPromise=l)}render(){return D(this,null,function*(){const l=m(this,_U,document.createElement("button"));l.className="altText";const U=yield rQ._l10nPromise.get("pdfjs-editor-alt-text-button-label");l.textContent=U,l.setAttribute("aria-label",U),l.tabIndex="0";const Z=V(this,Zd)._uiManager._signal;l.addEventListener("contextmenu",iU,{signal:Z}),l.addEventListener("pointerdown",t=>t.stopPropagation(),{signal:Z});const F=t=>{t.preventDefault(),V(this,Zd)._uiManager.editAltText(V(this,Zd))};return l.addEventListener("click",F,{capture:!0,signal:Z}),l.addEventListener("keydown",t=>{t.target===l&&t.key==="Enter"&&(m(this,mc,!0),F(t))},{signal:Z}),yield b(this,CQ,yR).call(this),l})}finish(){V(this,_U)&&(V(this,_U).focus({focusVisible:V(this,mc)}),m(this,mc,!1))}isEmpty(){return!V(this,bZ)&&!V(this,mZ)}get data(){return{altText:V(this,bZ),decorative:V(this,mZ)}}set data({altText:l,decorative:U}){V(this,bZ)===l&&V(this,mZ)===U||(m(this,bZ,l),m(this,mZ,U),b(this,CQ,yR).call(this))}toggle(l=!1){V(this,_U)&&(!l&&V(this,YU)&&(clearTimeout(V(this,YU)),m(this,YU,null)),V(this,_U).disabled=!l)}destroy(){var l;(l=V(this,_U))==null||l.remove(),m(this,_U,null),m(this,aZ,null)}};bZ=new WeakMap,mZ=new WeakMap,_U=new WeakMap,aZ=new WeakMap,YU=new WeakMap,mc=new WeakMap,Zd=new WeakMap,CQ=new WeakSet,yR=function(){return D(this,null,function*(){var d;const l=V(this,_U);if(!l)return;if(!V(this,bZ)&&!V(this,mZ)){l.classList.remove("done"),(d=V(this,aZ))==null||d.remove();return}l.classList.add("done"),xQ._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(F=>{l.setAttribute("aria-label",F)});let U=V(this,aZ);if(!U){m(this,aZ,U=document.createElement("span")),U.className="tooltip",U.setAttribute("role","tooltip");const F=U.id=`alt-text-tooltip-${V(this,Zd).id}`;l.setAttribute("aria-describedby",F);const t=100,c=V(this,Zd)._uiManager._signal;c.addEventListener("abort",()=>{clearTimeout(V(this,YU)),m(this,YU,null)},{once:!0}),l.addEventListener("mouseenter",()=>{m(this,YU,setTimeout(()=>{m(this,YU,null),V(this,aZ).classList.add("show"),V(this,Zd)._reportTelemetry({action:"alt_text_tooltip"})},t))},{signal:c}),l.addEventListener("mouseleave",()=>{var W;V(this,YU)&&(clearTimeout(V(this,YU)),m(this,YU,null)),(W=V(this,aZ))==null||W.classList.remove("show")},{signal:c})}U.innerText=V(this,mZ)?yield xQ._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip"):V(this,bZ),U.parentNode||l.append(U);const Z=V(this,Zd).getImageForAltText();Z==null||Z.setAttribute("aria-describedby",U.id)})},f(xQ,"_l10nPromise",null);let Kb=xQ;var Rt,Ud,dU,ec,Nt,fl,Pt,Mc,Jc,lU,xn,ft,Md,jQ,ht,yZ,Jd,Gc,Tc,GU,OQ,kR,gQ,LR,rn,zR,KQ,ai,DR,_e,IR,vb,vQ,ni,jn,ER,On,wR,CR,qe,xR,$e,rR,l2,jR,U2,gn,OR,At,bW;const Gd=class Il{constructor(l){i(this,gQ),i(this,KQ),i(this,DR),i(this,IR),i(this,vQ),i(this,jn),i(this,On),i(this,CR),i(this,xR),i(this,rR),i(this,jR),i(this,gn),i(this,At),i(this,Rt,null),i(this,Ud,null),i(this,dU,null),i(this,ec,!1),i(this,Nt,!1),i(this,fl,null),i(this,Pt,null),i(this,Mc,this.focusin.bind(this)),i(this,Jc,this.focusout.bind(this)),i(this,lU,null),i(this,xn,""),i(this,ft,!1),i(this,Md,null),i(this,jQ,!1),i(this,ht,!1),i(this,yZ,!1),i(this,Jd,null),i(this,Gc,0),i(this,Tc,0),i(this,GU,null),f(this,"_initialOptions",Object.create(null)),f(this,"_isVisible",!0),f(this,"_uiManager",null),f(this,"_focusEventsAllowed",!0),f(this,"_l10nPromise",null),i(this,OQ,!1),i(this,kR,Il._zIndex++),this.constructor===Il&&tl("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:F,pageX:t,pageY:c}}=this.parent.viewport;this.rotation=U,this.pageRotation=(360+U-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[Z,F],this.pageTranslation=[t,c];const[W,Q]=this.parentDimensions;this.x=l.x/W,this.y=l.y/Q,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const l=Il.prototype._resizeWithKeyboard,U=fW.TRANSLATE_SMALL,Z=fW.TRANSLATE_BIG;return Ul(this,"_resizerKeyboardManager",new UV([[["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"],Il.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return Ul(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(l){const U=new xJ({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(Il._l10nPromise||(Il._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(t=>[t,l.get(t.replaceAll(/([A-Z])/g,c=>`-${c.toLowerCase()}`))]))),Z!=null&&Z.strings)for(const t of Z.strings)Il._l10nPromise.set(t,l.get(t));if(Il._borderLineWidth!==-1)return;const F=getComputedStyle(document.documentElement);Il._borderLineWidth=parseFloat(F.getPropertyValue("--outline-width"))||0}static updateDefaultParams(l,U){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(l){return!1}static paste(l,U){tl("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return V(this,OQ)}set _isDraggable(l){var U;m(this,OQ,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=V(this,kR)}setParent(l){l!==null?(this.pageIndex=l.pageIndex,this.pageDimensions=l.pageDimensions):b(this,At,bW).call(this),this.parent=l}focusin(l){this._focusEventsAllowed&&(V(this,ft)?m(this,ft,!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,F){const[t,c]=this.parentDimensions;[Z,F]=this.screenToPageTranslation(Z,F),this.x=(l+Z)/t,this.y=(U+F)/c,this.fixAndSetPosition()}translate(l,U){b(this,gQ,LR).call(this,this.parentDimensions,l,U)}translateInPage(l,U){V(this,Md)||m(this,Md,[this.x,this.y]),b(this,gQ,LR).call(this,this.pageDimensions,l,U),this.div.scrollIntoView({block:"nearest"})}drag(l,U){V(this,Md)||m(this,Md,[this.x,this.y]);const[Z,F]=this.parentDimensions;if(this.x+=l/Z,this.y+=U/F,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:a,y:n}=this.div.getBoundingClientRect();this.parent.findNewParent(this,a,n)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:t,y:c}=this;const[W,Q]=this.getBaseTranslation();t+=W,c+=Q,this.div.style.left=`${(100*t).toFixed(2)}%`,this.div.style.top=`${(100*c).toFixed(2)}%`,this.div.scrollIntoView({block:"nearest"})}get _hasBeenMoved(){return!!V(this,Md)&&(V(this,Md)[0]!==this.x||V(this,Md)[1]!==this.y)}getBaseTranslation(){const[l,U]=this.parentDimensions,{_borderLineWidth:Z}=Il,F=Z/l,t=Z/U;switch(this.rotation){case 90:return[-F,t];case 180:return[F,t];case 270:return[F,-t];default:return[-F,-t]}}get _mustFixPosition(){return!0}fixAndSetPosition(l=this.rotation){const[U,Z]=this.pageDimensions;let{x:F,y:t,width:c,height:W}=this;if(c*=U,W*=Z,F*=U,t*=Z,this._mustFixPosition)switch(l){case 0:F=Math.max(0,Math.min(U-c,F)),t=Math.max(0,Math.min(Z-W,t));break;case 90:F=Math.max(0,Math.min(U-W,F)),t=Math.min(Z,Math.max(c,t));break;case 180:F=Math.min(U,Math.max(c,F)),t=Math.min(Z,Math.max(W,t));break;case 270:F=Math.min(U,Math.max(W,F)),t=Math.max(0,Math.min(Z-c,t));break}this.x=F/=U,this.y=t/=Z;const[Q,a]=this.getBaseTranslation();F+=Q,t+=a;const{style:n}=this.div;n.left=`${(100*F).toFixed(2)}%`,n.top=`${(100*t).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(l,U){var Z;return b(Z=Il,rn,zR).call(Z,l,U,this.parentRotation)}pageTranslationToScreen(l,U){var Z;return b(Z=Il,rn,zR).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,F=U*l,t=Z*l;return sU.isCSSRoundSupported?[Math.round(F),Math.round(t)]:[F,t]}setDims(l,U){const[Z,F]=this.parentDimensions;this.div.style.width=`${(100*l/Z).toFixed(2)}%`,V(this,Nt)||(this.div.style.height=`${(100*U/F).toFixed(2)}%`)}fixDims(){const{style:l}=this.div,{height:U,width:Z}=l,F=Z.endsWith("%"),t=!V(this,Nt)&&U.endsWith("%");if(F&&t)return;const[c,W]=this.parentDimensions;F||(l.width=`${(100*parseFloat(Z)/c).toFixed(2)}%`),!V(this,Nt)&&!t&&(l.height=`${(100*parseFloat(U)/W).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}altTextFinish(){var l;(l=V(this,dU))==null||l.finish()}addEditToolbar(){return D(this,null,function*(){return V(this,lU)||V(this,ht)?V(this,lU):(m(this,lU,new LJ(this)),this.div.append(V(this,lU).render()),V(this,dU)&&V(this,lU).addAltTextButton(yield V(this,dU).render()),V(this,lU))})}removeEditToolbar(){var l;V(this,lU)&&(V(this,lU).remove(),m(this,lU,null),(l=V(this,dU))==null||l.destroy())}getClientDimensions(){return this.div.getBoundingClientRect()}addAltTextButton(){return D(this,null,function*(){V(this,dU)||(Kb.initialize(Il._l10nPromise),m(this,dU,new Kb(this)),V(this,Rt)&&(V(this,dU).data=V(this,Rt),m(this,Rt,null)),yield this.addEditToolbar())})}get altTextData(){var l;return(l=V(this,dU))==null?void 0:l.data}set altTextData(l){V(this,dU)&&(V(this,dU).data=l)}hasAltText(){var l;return!((l=V(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=V(this,ec)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground();const l=this._uiManager._signal;this.div.addEventListener("focusin",V(this,Mc),{signal:l}),this.div.addEventListener("focusout",V(this,Jc),{signal:l});const[U,Z]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*Z/U).toFixed(2)}%`,this.div.style.maxHeight=`${(100*U/Z).toFixed(2)}%`);const[F,t]=this.getInitialTranslation();return this.translate(F,t),wn(this,this.div,["pointerdown"]),this.div}pointerdown(l){const{isMac:U}=sU.platform;if(l.button!==0||l.ctrlKey&&U){l.preventDefault();return}if(m(this,ft,!0),this._isDraggable){b(this,CR,qe).call(this,l);return}b(this,On,wR).call(this,l)}moveInDOM(){V(this,Jd)&&clearTimeout(V(this,Jd)),m(this,Jd,setTimeout(()=>{var l;m(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 F=this.parentScale,[t,c]=this.pageDimensions,[W,Q]=this.pageTranslation,a=l/F,n=U/F,s=this.x*t,R=this.y*c,N=this.width*t,h=this.height*c;switch(Z){case 0:return[s+a+W,c-R-n-h+Q,s+a+N+W,c-R-n+Q];case 90:return[s+n+W,c-R+a+Q,s+n+h+W,c-R+a+N+Q];case 180:return[s-a-N+W,c-R+n+Q,s-a+W,c-R+n+h+Q];case 270:return[s-n-h+W,c-R-a-N+Q,s-n+W,c-R-a+Q];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(l,U){const[Z,F,t,c]=l,W=t-Z,Q=c-F;switch(this.rotation){case 0:return[Z,U-c,W,Q];case 90:return[Z,U-F,Q,W];case 180:return[t,U-F,W,Q];case 270:return[t,U-c,Q,W];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){m(this,ht,!0)}disableEditMode(){m(this,ht,!1)}isInEditMode(){return V(this,ht)}shouldGetKeyboardEvents(){return V(this,yZ)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){var l,U;const Z=this._uiManager._signal;(l=this.div)==null||l.addEventListener("focusin",V(this,Mc),{signal:Z}),(U=this.div)==null||U.addEventListener("focusout",V(this,Jc),{signal:Z})}rotate(l){}serialize(l=!1,U=null){tl("An editor must be serializable")}static deserialize(l,U,Z){const F=new this.prototype.constructor({parent:U,id:U.getNextId(),uiManager:Z});F.rotation=l.rotation,m(F,Rt,l.accessibilityData);const[t,c]=F.pageDimensions,[W,Q,a,n]=F.getRectInCurrentCoords(l.rect,c);return F.x=W/t,F.y=Q/c,F.width=a/t,F.height=n/c,F}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.div.removeEventListener("focusin",V(this,Mc)),this.div.removeEventListener("focusout",V(this,Jc)),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),V(this,Jd)&&(clearTimeout(V(this,Jd)),m(this,Jd,null)),b(this,At,bW).call(this),this.removeEditToolbar(),V(this,GU)){for(const l of V(this,GU).values())clearTimeout(l);m(this,GU,null)}this.parent=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(b(this,DR,_e).call(this),V(this,fl).classList.remove("hidden"),wn(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),m(this,Pt,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const U=V(this,fl).children;if(!V(this,Ud)){m(this,Ud,Array.from(U));const c=b(this,xR,$e).bind(this),W=b(this,rR,l2).bind(this),Q=this._uiManager._signal;for(const a of V(this,Ud)){const n=a.getAttribute("data-resizer-name");a.setAttribute("role","spinbutton"),a.addEventListener("keydown",c,{signal:Q}),a.addEventListener("blur",W,{signal:Q}),a.addEventListener("focus",b(this,jR,U2).bind(this,n),{signal:Q}),Il._l10nPromise.get(`pdfjs-editor-resizer-label-${n}`).then(s=>a.setAttribute("aria-label",s))}}const Z=V(this,Ud)[0];let F=0;for(const c of U){if(c===Z)break;F++}const t=(360-this.rotation+this.parentRotation)%360/90*(V(this,Ud).length/4);if(t!==F){if(t<F)for(let W=0;W<F-t;W++)V(this,fl).append(V(this,fl).firstChild);else if(t>F)for(let W=0;W<t-F;W++)V(this,fl).firstChild.before(V(this,fl).lastChild);let c=0;for(const W of U){const Q=V(this,Ud)[c++].getAttribute("data-resizer-name");Il._l10nPromise.get(`pdfjs-editor-resizer-label-${Q}`).then(a=>W.setAttribute("aria-label",a))}}b(this,gn,OR).call(this,0),m(this,yZ,!0),V(this,fl).firstChild.focus({focusVisible:!0}),l.preventDefault(),l.stopImmediatePropagation()}_resizeWithKeyboard(l,U){V(this,yZ)&&b(this,jn,ER).call(this,V(this,xn),{movementX:l,movementY:U})}_stopResizingWithKeyboard(){b(this,At,bW).call(this),this.div.focus()}select(){var l,U;if(this.makeResizable(),(l=this.div)==null||l.classList.add("selectedEditor"),!V(this,lU)){this.addEditToolbar().then(()=>{var Z,F;(Z=this.div)!=null&&Z.classList.contains("selectedEditor")&&((F=V(this,lU))==null||F.show())});return}(U=V(this,lU))==null||U.show()}unselect(){var l,U,Z,F;(l=V(this,fl))==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}),(F=V(this,lU))==null||F.hide()}updateParams(l,U){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return V(this,jQ)}set isEditing(l){m(this,jQ,l),this.parent&&(l?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(l,U){m(this,Nt,!0);const Z=l/U,{style:F}=this.div;F.aspectRatio=Z,F.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){V(this,GU)||m(this,GU,new Map);const{action:Z}=l;let F=V(this,GU).get(Z);F&&clearTimeout(F),F=setTimeout(()=>{this._reportTelemetry(l),V(this,GU).delete(Z),V(this,GU).size===0&&m(this,GU,null)},Il._telemetryTimeout),V(this,GU).set(Z,F);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),m(this,ec,!1)}disable(){this.div&&(this.div.tabIndex=-1),m(this,ec,!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()}};Rt=new WeakMap,Ud=new WeakMap,dU=new WeakMap,ec=new WeakMap,Nt=new WeakMap,fl=new WeakMap,Pt=new WeakMap,Mc=new WeakMap,Jc=new WeakMap,lU=new WeakMap,xn=new WeakMap,ft=new WeakMap,Md=new WeakMap,jQ=new WeakMap,ht=new WeakMap,yZ=new WeakMap,Jd=new WeakMap,Gc=new WeakMap,Tc=new WeakMap,GU=new WeakMap,OQ=new WeakMap,kR=new WeakMap,gQ=new WeakSet,LR=function([d,l],U,Z){[U,Z]=this.screenToPageTranslation(U,Z),this.x+=U/d,this.y+=Z/l,this.fixAndSetPosition()},rn=new WeakSet,zR=function(d,l,U){switch(U){case 90:return[l,-d];case 180:return[-d,-l];case 270:return[-l,d];default:return[d,l]}},KQ=new WeakSet,ai=function(d){switch(d){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]}},DR=new WeakSet,_e=function(){if(V(this,fl))return;m(this,fl,document.createElement("div")),V(this,fl).classList.add("resizers");const d=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],l=this._uiManager._signal;for(const U of d){const Z=document.createElement("div");V(this,fl).append(Z),Z.classList.add("resizer",U),Z.setAttribute("data-resizer-name",U),Z.addEventListener("pointerdown",b(this,IR,vb).bind(this,U),{signal:l}),Z.addEventListener("contextmenu",iU,{signal:l}),Z.tabIndex=-1}this.div.prepend(V(this,fl))},IR=new WeakSet,vb=function(d,l){var U;l.preventDefault();const{isMac:Z}=sU.platform;if(l.button!==0||l.ctrlKey&&Z)return;(U=V(this,dU))==null||U.toggle(!1);const F=b(this,jn,ER).bind(this,d),t=this._isDraggable;this._isDraggable=!1;const c=this._uiManager._signal,W={passive:!0,capture:!0,signal:c};this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",F,W),window.addEventListener("contextmenu",iU,{signal:c});const Q=this.x,a=this.y,n=this.width,s=this.height,R=this.parent.div.style.cursor,N=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(l.target).cursor;const h=()=>{var e;this.parent.togglePointerEvents(!0),(e=V(this,dU))==null||e.toggle(!0),this._isDraggable=t,window.removeEventListener("pointerup",h),window.removeEventListener("blur",h),window.removeEventListener("pointermove",F,W),window.removeEventListener("contextmenu",iU),this.parent.div.style.cursor=R,this.div.style.cursor=N,b(this,vQ,ni).call(this,Q,a,n,s)};window.addEventListener("pointerup",h,{signal:c}),window.addEventListener("blur",h,{signal:c})},vQ=new WeakSet,ni=function(d,l,U,Z){const F=this.x,t=this.y,c=this.width,W=this.height;F===d&&t===l&&c===U&&W===Z||this.addCommands({cmd:()=>{this.width=c,this.height=W,this.x=F,this.y=t;const[Q,a]=this.parentDimensions;this.setDims(Q*c,a*W),this.fixAndSetPosition()},undo:()=>{this.width=U,this.height=Z,this.x=d,this.y=l;const[Q,a]=this.parentDimensions;this.setDims(Q*U,a*Z),this.fixAndSetPosition()},mustExec:!0})},jn=new WeakSet,ER=function(d,l){const[U,Z]=this.parentDimensions,F=this.x,t=this.y,c=this.width,W=this.height,Q=Gd.MIN_SIZE/U,a=Gd.MIN_SIZE/Z,n=u=>Math.round(u*1e4)/1e4,s=b(this,KQ,ai).call(this,this.rotation),R=(u,w)=>[s[0]*u+s[2]*w,s[1]*u+s[3]*w],N=b(this,KQ,ai).call(this,360-this.rotation),h=(u,w)=>[N[0]*u+N[2]*w,N[1]*u+N[3]*w];let e,M,J=!1,T=!1;switch(d){case"topLeft":J=!0,e=(u,w)=>[0,0],M=(u,w)=>[u,w];break;case"topMiddle":e=(u,w)=>[u/2,0],M=(u,w)=>[u/2,w];break;case"topRight":J=!0,e=(u,w)=>[u,0],M=(u,w)=>[0,w];break;case"middleRight":T=!0,e=(u,w)=>[u,w/2],M=(u,w)=>[0,w/2];break;case"bottomRight":J=!0,e=(u,w)=>[u,w],M=(u,w)=>[0,0];break;case"bottomMiddle":e=(u,w)=>[u/2,w],M=(u,w)=>[u/2,0];break;case"bottomLeft":J=!0,e=(u,w)=>[0,w],M=(u,w)=>[u,0];break;case"middleLeft":T=!0,e=(u,w)=>[0,w/2],M=(u,w)=>[u,w/2];break}const G=e(c,W),Y=M(c,W);let S=R(...Y);const X=n(F+S[0]),B=n(t+S[1]);let k=1,p=1,[o,y]=this.screenToPageTranslation(l.movementX,l.movementY);if([o,y]=h(o/U,y/Z),J){const u=Math.hypot(c,W);k=p=Math.max(Math.min(Math.hypot(Y[0]-G[0]-o,Y[1]-G[1]-y)/u,1/c,1/W),Q/c,a/W)}else T?k=Math.max(Q,Math.min(1,Math.abs(Y[0]-G[0]-o)))/c:p=Math.max(a,Math.min(1,Math.abs(Y[1]-G[1]-y)))/W;const I=n(c*k),E=n(W*p);S=R(...M(I,E));const O=X-S[0],r=B-S[1];this.width=I,this.height=E,this.x=O,this.y=r,this.setDims(U*I,Z*E),this.fixAndSetPosition()},On=new WeakSet,wR=function(d){const{isMac:l}=sU.platform;d.ctrlKey&&!l||d.shiftKey||d.metaKey&&l?this.parent.toggleSelected(this):this.parent.setSelected(this)},CR=new WeakSet,qe=function(d){const l=this._uiManager.isSelected(this);this._uiManager.setUpDragSession();let U,Z;const F=this._uiManager._signal;l&&(this.div.classList.add("moving"),U={passive:!0,capture:!0,signal:F},m(this,Gc,d.clientX),m(this,Tc,d.clientY),Z=c=>{const{clientX:W,clientY:Q}=c,[a,n]=this.screenToPageTranslation(W-V(this,Gc),Q-V(this,Tc));m(this,Gc,W),m(this,Tc,Q),this._uiManager.dragSelectedEditors(a,n)},window.addEventListener("pointermove",Z,U));const t=()=>{window.removeEventListener("pointerup",t),window.removeEventListener("blur",t),l&&(this.div.classList.remove("moving"),window.removeEventListener("pointermove",Z,U)),m(this,ft,!1),this._uiManager.endDragSession()||b(this,On,wR).call(this,d)};window.addEventListener("pointerup",t,{signal:F}),window.addEventListener("blur",t,{signal:F})},xR=new WeakSet,$e=function(d){Gd._resizerKeyboardManager.exec(this,d)},rR=new WeakSet,l2=function(d){var l;V(this,yZ)&&((l=d.relatedTarget)==null?void 0:l.parentNode)!==V(this,fl)&&b(this,At,bW).call(this)},jR=new WeakSet,U2=function(d){m(this,xn,V(this,yZ)?d:"")},gn=new WeakSet,OR=function(d){if(V(this,Ud))for(const l of V(this,Ud))l.tabIndex=d},At=new WeakSet,bW=function(){if(m(this,yZ,!1),b(this,gn,OR).call(this,-1),V(this,Pt)){const{savedX:d,savedY:l,savedWidth:U,savedHeight:Z}=V(this,Pt);b(this,vQ,ni).call(this,d,l,U,Z),m(this,Pt,null)}},i(Gd,rn),f(Gd,"_borderLineWidth",-1),f(Gd,"_colorManager",new CJ),f(Gd,"_zIndex",1),f(Gd,"_telemetryTimeout",1e3);let Vl=Gd;class xJ extends Vl{constructor(l){super(l),this.annotationElementId=l.annotationElementId,this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}const Hb=3285377520,eU=4294901760,vU=65535;class d2{constructor(l){this.h1=l?l&4294967295:Hb,this.h2=l?l&4294967295:Hb}update(l){let U,Z;if(typeof l=="string"){U=new Uint8Array(l.length*2),Z=0;for(let e=0,M=l.length;e<M;e++){const J=l.charCodeAt(e);J<=255?U[Z++]=J:(U[Z++]=J>>>8,U[Z++]=J&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 F=Z>>2,t=Z-F*4,c=new Uint32Array(U.buffer,0,F);let W=0,Q=0,a=this.h1,n=this.h2;const s=3432918353,R=461845907,N=s&vU,h=R&vU;for(let e=0;e<F;e++)e&1?(W=c[e],W=W*s&eU|W*N&vU,W=W<<15|W>>>17,W=W*R&eU|W*h&vU,a^=W,a=a<<13|a>>>19,a=a*5+3864292196):(Q=c[e],Q=Q*s&eU|Q*N&vU,Q=Q<<15|Q>>>17,Q=Q*R&eU|Q*h&vU,n^=Q,n=n<<13|n>>>19,n=n*5+3864292196);switch(W=0,t){case 3:W^=U[F*4+2]<<16;case 2:W^=U[F*4+1]<<8;case 1:W^=U[F*4],W=W*s&eU|W*N&vU,W=W<<15|W>>>17,W=W*R&eU|W*h&vU,F&1?a^=W:n^=W}this.h1=a,this.h2=n}hexdigest(){let l=this.h1,U=this.h2;return l^=U>>>1,l=l*3981806797&eU|l*36045&vU,U=U*4283543511&eU|((U<<16|l>>>16)*2950163797&eU)>>>16,l^=U>>>1,l=l*444984403&eU|l*60499&vU,U=U*3301882366&eU|((U<<16|l>>>16)*3120437893&eU)>>>16,l^=U>>>1,(l>>>0).toString(16).padStart(8,"0")+(U>>>0).toString(16).padStart(8,"0")}}const gR=Object.freeze({map:null,hash:"",transfer:void 0});var i0,Kl,KR,Z2;class sb{constructor(){i(this,KR),i(this,i0,!1),i(this,Kl,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(l,U){const Z=V(this,Kl).get(l);return Z===void 0?U:Object.assign(U,Z)}getRawValue(l){return V(this,Kl).get(l)}remove(l){if(V(this,Kl).delete(l),V(this,Kl).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const U of V(this,Kl).values())if(U instanceof Vl)return;this.onAnnotationEditor(null)}}setValue(l,U){const Z=V(this,Kl).get(l);let F=!1;if(Z!==void 0)for(const[t,c]of Object.entries(U))Z[t]!==c&&(F=!0,Z[t]=c);else F=!0,V(this,Kl).set(l,U);F&&b(this,KR,Z2).call(this),U instanceof Vl&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(U.constructor._type)}has(l){return V(this,Kl).has(l)}getAll(){return V(this,Kl).size>0?tb(V(this,Kl)):null}setAll(l){for(const[U,Z]of Object.entries(l))this.setValue(U,Z)}get size(){return V(this,Kl).size}resetModified(){V(this,i0)&&(m(this,i0,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new F2(this)}get serializable(){if(V(this,Kl).size===0)return gR;const l=new Map,U=new d2,Z=[],F=Object.create(null);let t=!1;for(const[c,W]of V(this,Kl)){const Q=W instanceof Vl?W.serialize(!1,F):W;Q&&(l.set(c,Q),U.update(`${c}:${JSON.stringify(Q)}`),t||(t=!!Q.bitmap))}if(t)for(const c of l.values())c.bitmap&&Z.push(c.bitmap);return l.size>0?{map:l,hash:U.hexdigest(),transfer:Z}:gR}get editorStats(){var Z;let l=null;const U=new Map;for(const F of V(this,Kl).values()){if(!(F instanceof Vl))continue;const t=F.telemetryFinalData;if(!t)continue;const{type:c}=t;U.has(c)||U.set(c,Object.getPrototypeOf(F).constructor),l||(l=Object.create(null));const W=l[c]||(l[c]=new Map);for(const[Q,a]of Object.entries(t)){if(Q==="type")continue;let n=W.get(Q);n||(n=new Map,W.set(Q,n));const s=(Z=n.get(a))!=null?Z:0;n.set(a,s+1)}}for(const[F,t]of U)l[F]=t.computeTelemetryFinalData(l[F]);return l}}i0=new WeakMap,Kl=new WeakMap,KR=new WeakSet,Z2=function(){V(this,i0)||(m(this,i0,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var HQ;class F2 extends sb{constructor(l){super(),i(this,HQ,void 0);const{map:U,hash:Z,transfer:F}=l.serializable,t=structuredClone(U,F?{transfer:F}:null);m(this,HQ,{map:t,hash:Z,transfer:F})}get print(){tl("Should not call PrintAnnotationStorage.print")}get serializable(){return V(this,HQ)}}HQ=new WeakMap;var Sc;class rJ{constructor({ownerDocument:l=globalThis.document,styleElement:U=null}){i(this,Sc,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(),V(this,Sc).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}loadSystemFont(Z){return D(this,arguments,function*({systemFontInfo:l,_inspectFont:U}){if(!(!l||V(this,Sc).has(l.loadedName))){if(Tl(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:F,src:t,style:c}=l,W=new FontFace(F,t,c);this.addNativeFontFace(W);try{yield W.load(),V(this,Sc).add(F),U==null||U(l)}catch(Q){A(`Cannot load system font: ${l.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(W)}return}tl("Not implemented: loadSystemFont without the Font Loading API.")}})}bind(l){return D(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(F){throw A(`Failed to load font '${Z.family}': '${F}'.`),l.disableFontFace=!0,F}}return}const U=l.createFontFaceRule();if(U){if(this.insertRule(U),this.isSyncFontLoadingSupported)return;yield new Promise(Z=>{const F=this._queueLoadingCallback(Z);this._prepareFontLoadEvent(l,F)})}})}get isFontLoadingAPISupported(){var l;const U=!!((l=this._document)!=null&&l.fonts);return Ul(this,"isFontLoadingAPISupported",U)}get isSyncFontLoadingSupported(){let l=!1;return(_l||typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.userAgent)=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(l=!0),Ul(this,"isSyncFontLoadingSupported",l)}_queueLoadingCallback(l){function U(){for(Tl(!F.done,"completeRequest() cannot be called twice."),F.done=!0;Z.length>0&&Z[0].done;){const t=Z.shift();setTimeout(t.callback,0)}}const{loadingRequests:Z}=this,F={done:!1,complete:U,callback:l};return Z.push(F),F}get _loadTestFont(){const l=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Ul(this,"_loadTestFont",l)}_prepareFontLoadEvent(l,U){function Z(G,Y){return G.charCodeAt(Y)<<24|G.charCodeAt(Y+1)<<16|G.charCodeAt(Y+2)<<8|G.charCodeAt(Y+3)&255}function F(G,Y,S,X){const B=G.substring(0,Y),k=G.substring(Y+S);return B+X+k}let t,c;const W=this._document.createElement("canvas");W.width=1,W.height=1;const Q=W.getContext("2d");let a=0;function n(G,Y){if(++a>30){A("Load test font never loaded."),Y();return}if(Q.font="30px "+G,Q.fillText(".",0,20),Q.getImageData(0,0,1,1).data[3]>0){Y();return}setTimeout(n.bind(null,G,Y))}const s=`lt${Date.now()}${this.loadTestFontId++}`;let R=this._loadTestFont;R=F(R,976,s.length,s);const N=16,h=1482184792;let e=Z(R,N);for(t=0,c=s.length-3;t<c;t+=4)e=e-h+Z(s,t)|0;t<s.length&&(e=e-h+Z(s+"XXX",t)|0),R=F(R,N,4,MJ(e));const M=`url(data:font/opentype;base64,${btoa(R)});`,J=`@font-face {font-family:"${s}";src:${M}}`;this.insertRule(J);const T=this._document.createElement("div");T.style.visibility="hidden",T.style.width=T.style.height="10px",T.style.position="absolute",T.style.top=T.style.left="0px";for(const G of[l.loadedName,s]){const Y=this._document.createElement("span");Y.textContent="Hi",Y.style.fontFamily=G,T.append(Y)}this._document.body.append(T),n(s,()=>{T.remove(),U.complete()})}}Sc=new WeakMap;class jJ{constructor(l,{disableFontFace:U=!1,inspectFont:Z=null}){this.compiledGlyphs=Object.create(null);for(const F in l)this[F]=l[F];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=ke(this.data),Z=`url(data:${this.mimetype};base64,${btoa(U)});`;let F;if(!this.cssFontInfo)F=`@font-face {font-family:"${this.loadedName}";src:${Z}}`;else{let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),F=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${Z}}`}return(l=this._inspectFont)==null||l.call(this,this,Z),F}getPathGenerator(l,U){if(this.compiledGlyphs[U]!==void 0)return this.compiledGlyphs[U];let Z;try{Z=l.get(this.loadedName+"_path_"+U)}catch(t){A(`getPathGenerator - ignoring character: "${t}".`)}if(!Array.isArray(Z)||Z.length===0)return this.compiledGlyphs[U]=function(t,c){};const F=[];for(let t=0,c=Z.length;t<c;)switch(Z[t++]){case Qd.BEZIER_CURVE_TO:{const[W,Q,a,n,s,R]=Z.slice(t,t+6);F.push(N=>N.bezierCurveTo(W,Q,a,n,s,R)),t+=6}break;case Qd.MOVE_TO:{const[W,Q]=Z.slice(t,t+2);F.push(a=>a.moveTo(W,Q)),t+=2}break;case Qd.LINE_TO:{const[W,Q]=Z.slice(t,t+2);F.push(a=>a.lineTo(W,Q)),t+=2}break;case Qd.QUADRATIC_CURVE_TO:{const[W,Q,a,n]=Z.slice(t,t+4);F.push(s=>s.quadraticCurveTo(W,Q,a,n)),t+=4}break;case Qd.RESTORE:F.push(W=>W.restore());break;case Qd.SAVE:F.push(W=>W.save());break;case Qd.SCALE:Tl(F.length===2,"Scale command is only valid at the third position.");break;case Qd.TRANSFORM:{const[W,Q,a,n,s,R]=Z.slice(t,t+6);F.push(N=>N.transform(W,Q,a,n,s,R)),t+=6}break;case Qd.TRANSLATE:{const[W,Q]=Z.slice(t,t+2);F.push(a=>a.translate(W,Q)),t+=2}break}return this.compiledGlyphs[U]=function(t,c){F[0](t),F[1](t),t.scale(c,-c);for(let W=2,Q=F.length;W<Q;W++)F[W](t)}}}if(_l){var vR=Promise.withResolvers(),Kn=null;D(void 0,null,function*(){const d=yield Promise.resolve().then(()=>sc),l=yield Promise.resolve().then(()=>sc),U=yield Promise.resolve().then(()=>sc),Z=yield Promise.resolve().then(()=>sc);let F,t;try{F=yield Promise.resolve().then(()=>sc)}catch(c){}try{t=yield Promise.resolve().then(()=>ZY)}catch(c){}return new Map(Object.entries({fs:d,http:l,https:U,url:Z,canvas:F,path2d:t}))}).then(d=>{var l,U,Z,F;if(Kn=d,vR.resolve(),!globalThis.DOMMatrix){const t=(l=d.get("canvas"))==null?void 0:l.DOMMatrix;t?globalThis.DOMMatrix=t:A("Cannot polyfill `DOMMatrix`, rendering may be broken.")}if(!globalThis.Path2D){const t=(U=d.get("canvas"))==null?void 0:U.CanvasRenderingContext2D,c=(Z=d.get("path2d"))==null?void 0:Z.applyPath2DToCanvasRenderingContext,W=(F=d.get("path2d"))==null?void 0:F.Path2D;t&&c&&W?(c(t),globalThis.Path2D=W):A("Cannot polyfill `Path2D`, rendering may be broken.")}},d=>{A(`loadPackages: ${d}`),Kn=new Map,vR.resolve()})}class Wd{static get promise(){return vR.promise}static get(l){return Kn==null?void 0:Kn.get(l)}}const t2=function(d){return Wd.get("fs").promises.readFile(d).then(l=>new Uint8Array(l))};class OJ extends os{}class gJ extends De{_createCanvas(l,U){return Wd.get("canvas").createCanvas(l,U)}}class KJ extends ys{_fetchData(l,U){return t2(l).then(Z=>({cMapData:Z,compressionType:U}))}}class vJ extends ks{_fetchData(l){return t2(l)}}const ZU={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function HR(d,l){if(!l)return;const U=l[2]-l[0],Z=l[3]-l[1],F=new Path2D;F.rect(l[0],l[1],U,Z),d.clip(F)}class dV{constructor(){this.constructor===dV&&tl("Cannot initialize BaseShadingPattern.")}getPattern(){tl("Abstract method `getPattern` called.")}}class HJ extends dV{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,F){let t;if(F===ZU.STROKE||F===ZU.FILL){const c=U.current.getClippedPathBoundingBox(F,sl(l))||[0,0,0,0],W=Math.ceil(c[2]-c[0])||1,Q=Math.ceil(c[3]-c[1])||1,a=U.cachedCanvases.getCanvas("pattern",W,Q,!0),n=a.context;n.clearRect(0,0,n.canvas.width,n.canvas.height),n.beginPath(),n.rect(0,0,n.canvas.width,n.canvas.height),n.translate(-c[0],-c[1]),Z=j.transform(Z,[1,0,0,1,c[0],c[1]]),n.transform(...U.baseTransform),this.matrix&&n.transform(...this.matrix),HR(n,this._bbox),n.fillStyle=this._createGradient(n),n.fill(),t=l.createPattern(a.canvas,"no-repeat");const s=new DOMMatrix(Z);t.setTransform(s)}else HR(l,this._bbox),t=this._createGradient(l);return t}}function si(d,l,U,Z,F,t,c,W){const Q=l.coords,a=l.colors,n=d.data,s=d.width*4;let R;Q[U+1]>Q[Z+1]&&(R=U,U=Z,Z=R,R=t,t=c,c=R),Q[Z+1]>Q[F+1]&&(R=Z,Z=F,F=R,R=c,c=W,W=R),Q[U+1]>Q[Z+1]&&(R=U,U=Z,Z=R,R=t,t=c,c=R);const N=(Q[U]+l.offsetX)*l.scaleX,h=(Q[U+1]+l.offsetY)*l.scaleY,e=(Q[Z]+l.offsetX)*l.scaleX,M=(Q[Z+1]+l.offsetY)*l.scaleY,J=(Q[F]+l.offsetX)*l.scaleX,T=(Q[F+1]+l.offsetY)*l.scaleY;if(h>=T)return;const G=a[t],Y=a[t+1],S=a[t+2],X=a[c],B=a[c+1],k=a[c+2],p=a[W],o=a[W+1],y=a[W+2],I=Math.round(h),E=Math.round(T);let O,r,u,w,_,Ql,Ml,FU;for(let cl=I;cl<=E;cl++){if(cl<M){const L=cl<h?0:(h-cl)/(h-M);O=N-(N-e)*L,r=G-(G-X)*L,u=Y-(Y-B)*L,w=S-(S-k)*L}else{let L;cl>T?L=1:M===T?L=0:L=(M-cl)/(M-T),O=e-(e-J)*L,r=X-(X-p)*L,u=B-(B-o)*L,w=k-(k-y)*L}let al;cl<h?al=0:cl>T?al=1:al=(h-cl)/(h-T),_=N-(N-J)*al,Ql=G-(G-p)*al,Ml=Y-(Y-o)*al,FU=S-(S-y)*al;const Od=Math.round(Math.min(O,_)),Vd=Math.round(Math.max(O,_));let x=s*cl+Od*4;for(let L=Od;L<=Vd;L++)al=(O-L)/(O-_),al<0?al=0:al>1&&(al=1),n[x++]=r-(r-Ql)*al|0,n[x++]=u-(u-Ml)*al|0,n[x++]=w-(w-FU)*al|0,n[x++]=255}}function PJ(d,l,U){const Z=l.coords,F=l.colors;let t,c;switch(l.type){case"lattice":const W=l.verticesPerRow,Q=Math.floor(Z.length/W)-1,a=W-1;for(t=0;t<Q;t++){let n=t*W;for(let s=0;s<a;s++,n++)si(d,U,Z[n],Z[n+1],Z[n+W],F[n],F[n+1],F[n+W]),si(d,U,Z[n+W+1],Z[n+1],Z[n+W],F[n+W+1],F[n+1],F[n+W])}break;case"triangles":for(t=0,c=Z.length;t<c;t+=3)si(d,U,Z[t],Z[t+1],Z[t+2],F[t],F[t+1],F[t+2]);break;default:throw new Error("illegal figure")}}class fJ extends dV{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 F=Math.floor(this._bounds[0]),t=Math.floor(this._bounds[1]),c=Math.ceil(this._bounds[2])-F,W=Math.ceil(this._bounds[3])-t,Q=Math.min(Math.ceil(Math.abs(c*l[0]*1.1)),3e3),a=Math.min(Math.ceil(Math.abs(W*l[1]*1.1)),3e3),n=c/Q,s=W/a,R={coords:this._coords,colors:this._colors,offsetX:-F,offsetY:-t,scaleX:1/n,scaleY:1/s},N=Q+2*2,h=a+2*2,e=Z.getCanvas("mesh",N,h,!1),M=e.context,J=M.createImageData(Q,a);if(U){const T=J.data;for(let G=0,Y=T.length;G<Y;G+=4)T[G]=U[0],T[G+1]=U[1],T[G+2]=U[2],T[G+3]=255}for(const T of this._figures)PJ(J,T,R);return M.putImageData(J,2,2),{canvas:e.canvas,offsetX:F-2*n,offsetY:t-2*s,scaleX:n,scaleY:s}}getPattern(l,U,Z,F){HR(l,this._bbox);let t;if(F===ZU.SHADING)t=j.singularValueDecompose2dScale(sl(l));else if(t=j.singularValueDecompose2dScale(U.baseTransform),this.matrix){const W=j.singularValueDecompose2dScale(this.matrix);t=[t[0]*W[0],t[1]*W[1]]}const c=this._createMeshCanvas(t,F===ZU.SHADING?null:this._background,U.cachedCanvases);return F!==ZU.SHADING&&(l.setTransform(...U.baseTransform),this.matrix&&l.transform(...this.matrix)),l.translate(c.offsetX,c.offsetY),l.scale(c.scaleX,c.scaleY),l.createPattern(c.canvas,"no-repeat")}}class AJ extends dV{getPattern(){return"hotpink"}}function _J(d){switch(d[0]){case"RadialAxial":return new HJ(d);case"Mesh":return new fJ(d);case"Dummy":return new AJ}throw new Error(`Unknown IR type: ${d[0]}`)}const Pb={COLORED:1,UNCOLORED:2},c2=class W2{constructor(l,U,Z,F,t){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=F,this.baseTransform=t}createPatternCanvas(l){const U=this.operatorList,Z=this.bbox,F=this.xstep,t=this.ystep,c=this.paintType,W=this.tilingType,Q=this.color,a=this.canvasGraphicsFactory;ps("TilingType: "+W);const n=Z[0],s=Z[1],R=Z[2],N=Z[3],h=j.singularValueDecompose2dScale(this.matrix),e=j.singularValueDecompose2dScale(this.baseTransform),M=[h[0]*e[0],h[1]*e[1]],J=this.getSizeAndScale(F,this.ctx.canvas.width,M[0]),T=this.getSizeAndScale(t,this.ctx.canvas.height,M[1]),G=l.cachedCanvases.getCanvas("pattern",J.size,T.size,!0),Y=G.context,S=a.createCanvasGraphics(Y);S.groupLevel=l.groupLevel,this.setFillAndStrokeStyleToContext(S,c,Q);let X=n,B=s,k=R,p=N;return n<0&&(X=0,k+=Math.abs(n)),s<0&&(B=0,p+=Math.abs(s)),Y.translate(-(J.scale*X),-(T.scale*B)),S.transform(J.scale,0,0,T.scale,0,0),Y.save(),this.clipBbox(S,X,B,k,p),S.baseTransform=sl(S.ctx),S.executeOperatorList(U),S.endDrawing(),{canvas:G.canvas,scaleX:J.scale,scaleY:T.scale,offsetX:X,offsetY:B}}getSizeAndScale(l,U,Z){l=Math.abs(l);const F=Math.max(W2.MAX_PATTERN_SIZE,U);let t=Math.ceil(l*Z);return t>=F?t=F:Z=t/l,{scale:Z,size:t}}clipBbox(l,U,Z,F,t){const c=F-U,W=t-Z;l.ctx.rect(U,Z,c,W),l.current.updateRectMinMax(sl(l.ctx),[U,Z,F,t]),l.clip(),l.endPath()}setFillAndStrokeStyleToContext(l,U,Z){const F=l.ctx,t=l.current;switch(U){case Pb.COLORED:const c=this.ctx;F.fillStyle=c.fillStyle,F.strokeStyle=c.strokeStyle,t.fillColor=c.fillStyle,t.strokeColor=c.strokeStyle;break;case Pb.UNCOLORED:const W=j.makeHexColor(Z[0],Z[1],Z[2]);F.fillStyle=W,F.strokeStyle=W,t.fillColor=W,t.strokeColor=W;break;default:throw new eJ(`Unsupported paint type: ${U}`)}}getPattern(l,U,Z,F){let t=Z;F!==ZU.SHADING&&(t=j.transform(t,U.baseTransform),this.matrix&&(t=j.transform(t,this.matrix)));const c=this.createPatternCanvas(U);let W=new DOMMatrix(t);W=W.translate(c.offsetX,c.offsetY),W=W.scale(1/c.scaleX,1/c.scaleY);const Q=l.createPattern(c.canvas,"repeat");return Q.setTransform(W),Q}};f(c2,"MAX_PATTERN_SIZE",3e3);let qJ=c2;function $J({src:d,srcPos:l=0,dest:U,width:Z,height:F,nonBlackColor:t=4294967295,inverseDecode:c=!1}){const W=sU.isLittleEndian?4278190080:255,[Q,a]=c?[t,W]:[W,t],n=Z>>3,s=Z&7,R=d.length;U=new Uint32Array(U.buffer);let N=0;for(let h=0;h<F;h++){for(const M=l+n;l<M;l++){const J=l<R?d[l]:255;U[N++]=J&128?a:Q,U[N++]=J&64?a:Q,U[N++]=J&32?a:Q,U[N++]=J&16?a:Q,U[N++]=J&8?a:Q,U[N++]=J&4?a:Q,U[N++]=J&2?a:Q,U[N++]=J&1?a:Q}if(s===0)continue;const e=l<R?d[l++]:255;for(let M=0;M<s;M++)U[N++]=e&1<<7-M?a:Q}return{srcPos:l,destPos:N}}const fb=16,Ab=100,lG=15,_b=10,qb=1e3,QU=16;function UG(d,l){if(d._removeMirroring)throw new Error("Context is already forwarding operations.");d.__originalSave=d.save,d.__originalRestore=d.restore,d.__originalRotate=d.rotate,d.__originalScale=d.scale,d.__originalTranslate=d.translate,d.__originalTransform=d.transform,d.__originalSetTransform=d.setTransform,d.__originalResetTransform=d.resetTransform,d.__originalClip=d.clip,d.__originalMoveTo=d.moveTo,d.__originalLineTo=d.lineTo,d.__originalBezierCurveTo=d.bezierCurveTo,d.__originalRect=d.rect,d.__originalClosePath=d.closePath,d.__originalBeginPath=d.beginPath,d._removeMirroring=()=>{d.save=d.__originalSave,d.restore=d.__originalRestore,d.rotate=d.__originalRotate,d.scale=d.__originalScale,d.translate=d.__originalTranslate,d.transform=d.__originalTransform,d.setTransform=d.__originalSetTransform,d.resetTransform=d.__originalResetTransform,d.clip=d.__originalClip,d.moveTo=d.__originalMoveTo,d.lineTo=d.__originalLineTo,d.bezierCurveTo=d.__originalBezierCurveTo,d.rect=d.__originalRect,d.closePath=d.__originalClosePath,d.beginPath=d.__originalBeginPath,delete d._removeMirroring},d.save=function(){l.save(),this.__originalSave()},d.restore=function(){l.restore(),this.__originalRestore()},d.translate=function(U,Z){l.translate(U,Z),this.__originalTranslate(U,Z)},d.scale=function(U,Z){l.scale(U,Z),this.__originalScale(U,Z)},d.transform=function(U,Z,F,t,c,W){l.transform(U,Z,F,t,c,W),this.__originalTransform(U,Z,F,t,c,W)},d.setTransform=function(U,Z,F,t,c,W){l.setTransform(U,Z,F,t,c,W),this.__originalSetTransform(U,Z,F,t,c,W)},d.resetTransform=function(){l.resetTransform(),this.__originalResetTransform()},d.rotate=function(U){l.rotate(U),this.__originalRotate(U)},d.clip=function(U){l.clip(U),this.__originalClip(U)},d.moveTo=function(U,Z){l.moveTo(U,Z),this.__originalMoveTo(U,Z)},d.lineTo=function(U,Z){l.lineTo(U,Z),this.__originalLineTo(U,Z)},d.bezierCurveTo=function(U,Z,F,t,c,W){l.bezierCurveTo(U,Z,F,t,c,W),this.__originalBezierCurveTo(U,Z,F,t,c,W)},d.rect=function(U,Z,F,t){l.rect(U,Z,F,t),this.__originalRect(U,Z,F,t)},d.closePath=function(){l.closePath(),this.__originalClosePath()},d.beginPath=function(){l.beginPath(),this.__originalBeginPath()}}class dG{constructor(l){this.canvasFactory=l,this.cache=Object.create(null)}getCanvas(l,U,Z){let F;return this.cache[l]!==void 0?(F=this.cache[l],this.canvasFactory.reset(F,U,Z)):(F=this.canvasFactory.create(U,Z),this.cache[l]=F),F}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 DV(d,l,U,Z,F,t,c,W,Q,a){const[n,s,R,N,h,e]=sl(d);if(s===0&&R===0){const T=c*n+h,G=Math.round(T),Y=W*N+e,S=Math.round(Y),X=(c+Q)*n+h,B=Math.abs(Math.round(X)-G)||1,k=(W+a)*N+e,p=Math.abs(Math.round(k)-S)||1;return d.setTransform(Math.sign(n),0,0,Math.sign(N),G,S),d.drawImage(l,U,Z,F,t,0,0,B,p),d.setTransform(n,s,R,N,h,e),[B,p]}if(n===0&&N===0){const T=W*R+h,G=Math.round(T),Y=c*s+e,S=Math.round(Y),X=(W+a)*R+h,B=Math.abs(Math.round(X)-G)||1,k=(c+Q)*s+e,p=Math.abs(Math.round(k)-S)||1;return d.setTransform(0,Math.sign(s),Math.sign(R),0,G,S),d.drawImage(l,U,Z,F,t,0,0,p,B),d.setTransform(n,s,R,N,h,e),[p,B]}d.drawImage(l,U,Z,F,t,c,W,Q,a);const M=Math.hypot(n,s),J=Math.hypot(R,N);return[M*Q,J*a]}function ZG(d){const{width:l,height:U}=d;if(l>qb||U>qb)return null;const Z=1e3,F=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),t=l+1;let c=new Uint8Array(t*(U+1)),W,Q,a;const n=l+7&-8;let s=new Uint8Array(n*U),R=0;for(const M of d.data){let J=128;for(;J>0;)s[R++]=M&J?0:255,J>>=1}let N=0;for(R=0,s[R]!==0&&(c[0]=1,++N),Q=1;Q<l;Q++)s[R]!==s[R+1]&&(c[Q]=s[R]?2:1,++N),R++;for(s[R]!==0&&(c[Q]=2,++N),W=1;W<U;W++){R=W*n,a=W*t,s[R-n]!==s[R]&&(c[a]=s[R]?1:8,++N);let M=(s[R]?4:0)+(s[R-n]?8:0);for(Q=1;Q<l;Q++)M=(M>>2)+(s[R+1]?4:0)+(s[R-n+1]?8:0),F[M]&&(c[a+Q]=F[M],++N),R++;if(s[R-n]!==s[R]&&(c[a+Q]=s[R]?2:4,++N),N>Z)return null}for(R=n*(U-1),a=W*t,s[R]!==0&&(c[a]=8,++N),Q=1;Q<l;Q++)s[R]!==s[R+1]&&(c[a+Q]=s[R]?4:8,++N),R++;if(s[R]!==0&&(c[a+Q]=4,++N),N>Z)return null;const h=new Int32Array([0,t,-1,0,-t,0,0,0,1]),e=new Path2D;for(W=0;N&&W<=U;W++){let M=W*t;const J=M+l;for(;M<J&&!c[M];)M++;if(M===J)continue;e.moveTo(M%t,W);const T=M;let G=c[M];do{const Y=h[G];do M+=Y;while(!c[M]);const S=c[M];S!==5&&S!==10?(G=S,c[M]=0):(G=S&51*G>>4,c[M]&=G>>2|G<<2),e.lineTo(M%t,M/t|0),c[M]||--N}while(T!==M);--W}return s=null,c=null,function(M){M.save(),M.scale(1/l,-1/U),M.translate(0,-U),M.fill(e),M.beginPath(),M.restore()}}class $b{constructor(l,U){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=oe,this.textMatrixScale=1,this.fontMatrix=sR,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=Ol.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]=j.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=j.applyTransform(U,l),F=j.applyTransform(U.slice(2),l),t=j.applyTransform([U[0],U[3]],l),c=j.applyTransform([U[2],U[1]],l);this.minX=Math.min(this.minX,Z[0],F[0],t[0],c[0]),this.minY=Math.min(this.minY,Z[1],F[1],t[1],c[1]),this.maxX=Math.max(this.maxX,Z[0],F[0],t[0],c[0]),this.maxY=Math.max(this.maxY,Z[1],F[1],t[1],c[1])}updateScalingPathMinMax(l,U){j.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,F,t,c,W,Q,a,n){const s=j.bezierBoundingBox(U,Z,F,t,c,W,Q,a,n);n||this.updateRectMinMax(l,s)}getPathBoundingBox(l=ZU.FILL,U=null){const Z=[this.minX,this.minY,this.maxX,this.maxY];if(l===ZU.STROKE){U||tl("Stroke bounding box must include transform.");const F=j.singularValueDecompose2dScale(U),t=F[0]*this.lineWidth/2,c=F[1]*this.lineWidth/2;Z[0]-=t,Z[1]-=c,Z[2]+=t,Z[3]+=c}return Z}updateClipFromPath(){const l=j.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 j.intersect(this.clipBox,this.getPathBoundingBox(l,U))}}function lm(d,l){if(typeof ImageData<"u"&&l instanceof ImageData){d.putImageData(l,0,0);return}const U=l.height,Z=l.width,F=U%QU,t=(U-F)/QU,c=F===0?t:t+1,W=d.createImageData(Z,QU);let Q=0,a;const n=l.data,s=W.data;let R,N,h,e;if(l.kind===uQ.GRAYSCALE_1BPP){const M=n.byteLength,J=new Uint32Array(s.buffer,0,s.byteLength>>2),T=J.length,G=Z+7>>3,Y=4294967295,S=sU.isLittleEndian?4278190080:255;for(R=0;R<c;R++){for(h=R<t?QU:F,a=0,N=0;N<h;N++){const X=M-Q;let B=0;const k=X>G?Z:X*8-7,p=k&-8;let o=0,y=0;for(;B<p;B+=8)y=n[Q++],J[a++]=y&128?Y:S,J[a++]=y&64?Y:S,J[a++]=y&32?Y:S,J[a++]=y&16?Y:S,J[a++]=y&8?Y:S,J[a++]=y&4?Y:S,J[a++]=y&2?Y:S,J[a++]=y&1?Y:S;for(;B<k;B++)o===0&&(y=n[Q++],o=128),J[a++]=y&o?Y:S,o>>=1}for(;a<T;)J[a++]=0;d.putImageData(W,0,R*QU)}}else if(l.kind===uQ.RGBA_32BPP){for(N=0,e=Z*QU*4,R=0;R<t;R++)s.set(n.subarray(Q,Q+e)),Q+=e,d.putImageData(W,0,N),N+=QU;R<c&&(e=Z*F*4,s.set(n.subarray(Q,Q+e)),d.putImageData(W,0,N))}else if(l.kind===uQ.RGB_24BPP)for(h=QU,e=Z*h,R=0;R<c;R++){for(R>=t&&(h=F,e=Z*h),a=0,N=e;N--;)s[a++]=n[Q++],s[a++]=n[Q++],s[a++]=n[Q++],s[a++]=255;d.putImageData(W,0,R*QU)}else throw new Error(`bad image kind: ${l.kind}`)}function Um(d,l){if(l.bitmap){d.drawImage(l.bitmap,0,0);return}const U=l.height,Z=l.width,F=U%QU,t=(U-F)/QU,c=F===0?t:t+1,W=d.createImageData(Z,QU);let Q=0;const a=l.data,n=W.data;for(let s=0;s<c;s++){const R=s<t?QU:F;({srcPos:Q}=$J({src:a,srcPos:Q,dest:n,width:Z,height:R,nonBlackColor:0})),d.putImageData(W,0,s*QU)}}function r0(d,l){const U=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const Z of U)d[Z]!==void 0&&(l[Z]=d[Z]);d.setLineDash!==void 0&&(l.setLineDash(d.getLineDash()),l.lineDashOffset=d.lineDashOffset)}function IV(d){if(d.strokeStyle=d.fillStyle="#000000",d.fillRule="nonzero",d.globalAlpha=1,d.lineWidth=1,d.lineCap="butt",d.lineJoin="miter",d.miterLimit=10,d.globalCompositeOperation="source-over",d.font="10px sans-serif",d.setLineDash!==void 0&&(d.setLineDash([]),d.lineDashOffset=0),!_l){const{filter:l}=d;l!=="none"&&l!==""&&(d.filter="none")}}function dm(d,l){if(l)return!0;const U=j.singularValueDecompose2dScale(d);U[0]=Math.fround(U[0]),U[1]=Math.fround(U[1]);const Z=Math.fround((globalThis.devicePixelRatio||1)*Y0.PDF_TO_CSS_UNITS);return U[0]<=Z&&U[1]<=Z}const FG=["butt","round","square"],tG=["miter","round","bevel"],cG={},Zm={};var PQ,PR,fQ,fR;const WG=class V2{constructor(l,U,Z,F,t,{optionalContentConfig:c,markedContentStack:W=null},Q,a){i(this,PQ),i(this,fQ),this.ctx=l,this.current=new $b(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=F,this.filterFactory=t,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=W||[],this.optionalContentConfig=c,this.cachedCanvases=new dG(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=Q,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=a,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:F=null}){const t=this.ctx.canvas.width,c=this.ctx.canvas.height,W=this.ctx.fillStyle;if(this.ctx.fillStyle=F||"#ffffff",this.ctx.fillRect(0,0,t,c),this.ctx.fillStyle=W,Z){const Q=this.cachedCanvases.getCanvas("transparent",t,c);this.compositeCtx=this.ctx,this.transparentCanvas=Q.canvas,this.ctx=Q.context,this.ctx.save(),this.ctx.transform(...sl(this.compositeCtx))}this.ctx.save(),IV(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=sl(this.ctx)}executeOperatorList(l,U,Z,F){const t=l.argsArray,c=l.fnArray;let W=U||0;const Q=t.length;if(Q===W)return W;const a=Q-W>_b&&typeof Z=="function",n=a?Date.now()+lG:0;let s=0;const R=this.commonObjs,N=this.objs;let h;for(;;){if(F!==void 0&&W===F.nextBreakPoint)return F.breakIt(W,Z),W;if(h=c[W],h!==wU.dependency)this[h].apply(this,t[W]);else for(const e of t[W]){const M=e.startsWith("g_")?R:N;if(!M.has(e))return M.get(e,Z),W}if(W++,W===Q)return W;if(a&&++s>_b){if(Date.now()>n)return Z(),W;s=0}}}endDrawing(){b(this,PQ,PR).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(),b(this,fQ,fR).call(this)}_scaleImage(l,U){const Z=l.width,F=l.height;let t=Math.max(Math.hypot(U[0],U[1]),1),c=Math.max(Math.hypot(U[2],U[3]),1),W=Z,Q=F,a="prescale1",n,s;for(;t>2&&W>1||c>2&&Q>1;){let R=W,N=Q;t>2&&W>1&&(R=W>=16384?Math.floor(W/2)-1||1:Math.ceil(W/2),t/=W/R),c>2&&Q>1&&(N=Q>=16384?Math.floor(Q/2)-1||1:Math.ceil(Q)/2,c/=Q/N),n=this.cachedCanvases.getCanvas(a,R,N),s=n.context,s.clearRect(0,0,R,N),s.drawImage(l,0,0,W,Q,0,0,R,N),l=n.canvas,W=R,Q=N,a=a==="prescale1"?"prescale2":"prescale1"}return{img:l,paintWidth:W,paintHeight:Q}}_createMaskCanvas(l){const U=this.ctx,{width:Z,height:F}=l,t=this.current.fillColor,c=this.current.patternFill,W=sl(U);let Q,a,n,s;if((l.bitmap||l.data)&&l.count>1){const k=l.bitmap||l.data.buffer;a=JSON.stringify(c?W:[W.slice(0,4),t]),Q=this._cachedBitmapsMap.get(k),Q||(Q=new Map,this._cachedBitmapsMap.set(k,Q));const p=Q.get(a);if(p&&!c){const o=Math.round(Math.min(W[0],W[2])+W[4]),y=Math.round(Math.min(W[1],W[3])+W[5]);return{canvas:p,offsetX:o,offsetY:y}}n=p}n||(s=this.cachedCanvases.getCanvas("maskCanvas",Z,F),Um(s.context,l));let R=j.transform(W,[1/Z,0,0,-1/F,0,0]);R=j.transform(R,[1,0,0,1,0,-F]);const[N,h,e,M]=j.getAxialAlignedBoundingBox([0,0,Z,F],R),J=Math.round(e-N)||1,T=Math.round(M-h)||1,G=this.cachedCanvases.getCanvas("fillCanvas",J,T),Y=G.context,S=N,X=h;Y.translate(-S,-X),Y.transform(...R),n||(n=this._scaleImage(s.canvas,ad(Y)),n=n.img,Q&&c&&Q.set(a,n)),Y.imageSmoothingEnabled=dm(sl(Y),l.interpolate),DV(Y,n,0,0,n.width,n.height,0,0,Z,F),Y.globalCompositeOperation="source-in";const B=j.transform(ad(Y),[1,0,0,1,-S,-X]);return Y.fillStyle=c?t.getPattern(U,this,B,ZU.FILL):t,Y.fillRect(0,0,Z,F),Q&&!c&&(this.cachedCanvases.delete("fillCanvas"),Q.set(a,G.canvas)),{canvas:G.canvas,offsetX:Math.round(S),offsetY:Math.round(X)}}setLineWidth(l){l!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=l,this.ctx.lineWidth=l}setLineCap(l){this.ctx.lineCap=FG[l]}setLineJoin(l){this.ctx.lineJoin=tG[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,F=this.cachedCanvases.getCanvas(Z,l,U);this.suspendedCtx=this.ctx,this.ctx=F.context;const t=this.ctx;t.setTransform(...sl(this.suspendedCtx)),r0(this.suspendedCtx,t),UG(t,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(),r0(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,F){const t=F[0],c=F[1],W=F[2]-t,Q=F[3]-c;W===0||Q===0||(this.genericComposeSMask(U.context,Z,W,Q,U.subtype,U.backdrop,U.transferMap,t,c,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,F,t,c,W,Q,a,n,s){let R=l.canvas,N=Q-n,h=a-s;if(c){if(N<0||h<0||N+Z>R.width||h+F>R.height){const M=this.cachedCanvases.getCanvas("maskExtension",Z,F),J=M.context;J.drawImage(R,-N,-h),c.some(T=>T!==0)&&(J.globalCompositeOperation="destination-atop",J.fillStyle=j.makeHexColor(...c),J.fillRect(0,0,Z,F),J.globalCompositeOperation="source-over"),R=M.canvas,N=h=0}else if(c.some(M=>M!==0)){l.save(),l.globalAlpha=1,l.setTransform(1,0,0,1,0,0);const M=new Path2D;M.rect(N,h,Z,F),l.clip(M),l.globalCompositeOperation="destination-atop",l.fillStyle=j.makeHexColor(...c),l.fillRect(N,h,Z,F),l.restore()}}U.save(),U.globalAlpha=1,U.setTransform(1,0,0,1,0,0),t==="Alpha"&&W?U.filter=this.filterFactory.addAlphaFilter(W):t==="Luminosity"&&(U.filter=this.filterFactory.addLuminosityFilter(W));const e=new Path2D;e.rect(Q,a,Z,F),U.clip(e),U.globalCompositeOperation="destination-in",U.drawImage(R,N,h,Z,F,Q,a,Z,F),U.restore()}save(){this.inSMaskMode?(r0(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(),r0(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(l,U,Z,F,t,c){this.ctx.transform(l,U,Z,F,t,c),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(l,U,Z){const F=this.ctx,t=this.current;let c=t.x,W=t.y,Q,a;const n=sl(F),s=n[0]===0&&n[3]===0||n[1]===0&&n[2]===0,R=s?Z.slice(0):null;for(let N=0,h=0,e=l.length;N<e;N++)switch(l[N]|0){case wU.rectangle:c=U[h++],W=U[h++];const M=U[h++],J=U[h++],T=c+M,G=W+J;F.moveTo(c,W),M===0||J===0?F.lineTo(T,G):(F.lineTo(T,W),F.lineTo(T,G),F.lineTo(c,G)),s||t.updateRectMinMax(n,[c,W,T,G]),F.closePath();break;case wU.moveTo:c=U[h++],W=U[h++],F.moveTo(c,W),s||t.updatePathMinMax(n,c,W);break;case wU.lineTo:c=U[h++],W=U[h++],F.lineTo(c,W),s||t.updatePathMinMax(n,c,W);break;case wU.curveTo:Q=c,a=W,c=U[h+4],W=U[h+5],F.bezierCurveTo(U[h],U[h+1],U[h+2],U[h+3],c,W),t.updateCurvePathMinMax(n,Q,a,U[h],U[h+1],U[h+2],U[h+3],c,W,R),h+=6;break;case wU.curveTo2:Q=c,a=W,F.bezierCurveTo(c,W,U[h],U[h+1],U[h+2],U[h+3]),t.updateCurvePathMinMax(n,Q,a,c,W,U[h],U[h+1],U[h+2],U[h+3],R),c=U[h+2],W=U[h+3],h+=4;break;case wU.curveTo3:Q=c,a=W,c=U[h+2],W=U[h+3],F.bezierCurveTo(U[h],U[h+1],c,W,c,W),t.updateCurvePathMinMax(n,Q,a,U[h],U[h+1],c,W,c,W,R),h+=4;break;case wU.closePath:F.closePath();break}s&&t.updateScalingPathMinMax(n,R),t.setCurrentPoint(c,W)}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,ad(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,F=this.current.patternFill;let t=!1;F&&(U.save(),U.fillStyle=Z.getPattern(U,this,ad(U),ZU.FILL),t=!0);const c=this.current.getClippedPathBoundingBox();this.contentVisible&&c!==null&&(this.pendingEOFill?(U.fill("evenodd"),this.pendingEOFill=!1):U.fill()),t&&U.restore(),l&&this.consumePath(c)}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=cG}eoClip(){this.pendingClip=Zm}beginText(){this.current.textMatrix=oe,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 F=this.commonObjs.get(l),t=this.current;if(!F)throw new Error(`Can't find font for ${l}`);if(t.fontMatrix=F.fontMatrix||sR,(t.fontMatrix[0]===0||t.fontMatrix[3]===0)&&A("Invalid font matrix for font "+l),U<0?(U=-U,t.fontDirection=-1):t.fontDirection=1,this.current.font=F,this.current.fontSize=U,F.isType3Font)return;const c=F.loadedName||"sans-serif",W=((Z=F.systemFontInfo)==null?void 0:Z.css)||`"${c}", ${F.fallbackName}`;let Q="normal";F.black?Q="900":F.bold&&(Q="bold");const a=F.italic?"italic":"normal";let n=U;U<fb?n=fb:U>Ab&&(n=Ab),this.current.fontSizeScale=U/n,this.ctx.font=`${a} ${Q} ${n}px ${W}`}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,F,t,c){this.current.textMatrix=[l,U,Z,F,t,c],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,F){const t=this.ctx,c=this.current,W=c.font,Q=c.textRenderingMode,a=c.fontSize/c.fontSizeScale,n=Q&Ol.FILL_STROKE_MASK,s=!!(Q&Ol.ADD_TO_PATH_FLAG),R=c.patternFill&&!W.missingFile;let N;(W.disableFontFace||s||R)&&(N=W.getPathGenerator(this.commonObjs,l)),W.disableFontFace||R?(t.save(),t.translate(U,Z),t.beginPath(),N(t,a),F&&t.setTransform(...F),(n===Ol.FILL||n===Ol.FILL_STROKE)&&t.fill(),(n===Ol.STROKE||n===Ol.FILL_STROKE)&&t.stroke(),t.restore()):((n===Ol.FILL||n===Ol.FILL_STROKE)&&t.fillText(l,U,Z),(n===Ol.STROKE||n===Ol.FILL_STROKE)&&t.strokeText(l,U,Z)),s&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:sl(t),x:U,y:Z,fontSize:a,addToPath:N})}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 F=3;F<U.length;F+=4)if(U[F]>0&&U[F]<255){Z=!0;break}return Ul(this,"isFontSubpixelAAEnabled",Z)}showText(l){const U=this.current,Z=U.font;if(Z.isType3Font)return this.showType3Text(l);const F=U.fontSize;if(F===0)return;const t=this.ctx,c=U.fontSizeScale,W=U.charSpacing,Q=U.wordSpacing,a=U.fontDirection,n=U.textHScale*a,s=l.length,R=Z.vertical,N=R?1:-1,h=Z.defaultVMetrics,e=F*U.fontMatrix[0],M=U.textRenderingMode===Ol.FILL&&!Z.disableFontFace&&!U.patternFill;t.save(),t.transform(...U.textMatrix),t.translate(U.x,U.y+U.textRise),a>0?t.scale(n,-1):t.scale(n,1);let J;if(U.patternFill){t.save();const X=U.fillColor.getPattern(t,this,ad(t),ZU.FILL);J=sl(t),t.restore(),t.fillStyle=X}let T=U.lineWidth;const G=U.textMatrixScale;if(G===0||T===0){const X=U.textRenderingMode&Ol.FILL_STROKE_MASK;(X===Ol.STROKE||X===Ol.FILL_STROKE)&&(T=this.getSinglePixelWidth())}else T/=G;if(c!==1&&(t.scale(c,c),T/=c),t.lineWidth=T,Z.isInvalidPDFjsFont){const X=[];let B=0;for(const k of l)X.push(k.unicode),B+=k.width;t.fillText(X.join(""),0,0),U.x+=B*e*n,t.restore(),this.compose();return}let Y=0,S;for(S=0;S<s;++S){const X=l[S];if(typeof X=="number"){Y+=N*X*F/1e3;continue}let B=!1;const k=(X.isSpace?Q:0)+W,p=X.fontChar,o=X.accent;let y,I,E=X.width;if(R){const r=X.vmetric||h,u=-(X.vmetric?r[1]:E*.5)*e,w=r[2]*e;E=r?-r[0]:E,y=u/c,I=(Y+w)/c}else y=Y/c,I=0;if(Z.remeasure&&E>0){const r=t.measureText(p).width*1e3/F*c;if(E<r&&this.isFontSubpixelAAEnabled){const u=E/r;B=!0,t.save(),t.scale(u,1),y/=u}else E!==r&&(y+=(E-r)/2e3*F/c)}if(this.contentVisible&&(X.isInFont||Z.missingFile)){if(M&&!o)t.fillText(p,y,I);else if(this.paintChar(p,y,I,J),o){const r=y+F*o.offset.x/c,u=I-F*o.offset.y/c;this.paintChar(o.fontChar,r,u,J)}}const O=R?E*e-k*a:E*e+k*a;Y+=O,B&&t.restore()}R?U.y-=Y:U.x+=Y*n,t.restore(),this.compose()}showType3Text(l){const U=this.ctx,Z=this.current,F=Z.font,t=Z.fontSize,c=Z.fontDirection,W=F.vertical?1:-1,Q=Z.charSpacing,a=Z.wordSpacing,n=Z.textHScale*c,s=Z.fontMatrix||sR,R=l.length,N=Z.textRenderingMode===Ol.INVISIBLE;let h,e,M,J;if(!(N||t===0)){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,U.save(),U.transform(...Z.textMatrix),U.translate(Z.x,Z.y),U.scale(n,c),h=0;h<R;++h){if(e=l[h],typeof e=="number"){J=W*e*t/1e3,this.ctx.translate(J,0),Z.x+=J*n;continue}const T=(e.isSpace?a:0)+Q,G=F.charProcOperatorList[e.operatorListId];if(!G){A(`Type3 character "${e.operatorListId}" is not available.`);continue}this.contentVisible&&(this.processingType3=e,this.save(),U.scale(t,t),U.transform(...s),this.executeOperatorList(G),this.restore()),M=j.applyTransform([e.width,0],s)[0]*t+T,U.translate(M,0),Z.x+=M*n}U.restore(),this.processingType3=null}}setCharWidth(l,U){}setCharWidthAndBounds(l,U,Z,F,t,c){this.ctx.rect(Z,F,t-Z,c-F),this.ctx.clip(),this.endPath()}getColorN_Pattern(l){let U;if(l[0]==="TilingPattern"){const Z=l[1],F=this.baseTransform||sl(this.ctx),t={createCanvasGraphics:c=>new V2(c,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};U=new qJ(l,Z,this.ctx,t,F)}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 F=j.makeHexColor(l,U,Z);this.ctx.strokeStyle=F,this.current.strokeColor=F}setFillRGBColor(l,U,Z){const F=j.makeHexColor(l,U,Z);this.ctx.fillStyle=F,this.current.fillColor=F,this.current.patternFill=!1}_getPattern(l,U=null){let Z;return this.cachedPatterns.has(l)?Z=this.cachedPatterns.get(l):(Z=_J(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,ad(U),ZU.SHADING);const F=ad(U);if(F){const{width:t,height:c}=U.canvas,[W,Q,a,n]=j.getAxialAlignedBoundingBox([0,0,t,c],F);this.ctx.fillRect(W,Q,a-W,n-Q)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){tl("Should not call beginInlineImage")}beginImageData(){tl("Should not call beginImageData")}paintFormXObjectBegin(l,U){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),l&&this.transform(...l),this.baseTransform=sl(this.ctx),U)){const Z=U[2]-U[0],F=U[3]-U[1];this.ctx.rect(U[0],U[1],Z,F),this.current.updateRectMinMax(sl(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||ps("TODO: Support non-isolated groups."),l.knockout&&A("Knockout groups not supported.");const Z=sl(U);if(l.matrix&&U.transform(...l.matrix),!l.bbox)throw new Error("Bounding box is required.");let F=j.getAxialAlignedBoundingBox(l.bbox,sl(U));const t=[0,0,U.canvas.width,U.canvas.height];F=j.intersect(F,t)||[0,0,0,0];const c=Math.floor(F[0]),W=Math.floor(F[1]),Q=Math.max(Math.ceil(F[2])-c,1),a=Math.max(Math.ceil(F[3])-W,1);this.current.startNewPathAndClipBox([0,0,Q,a]);let n="groupAt"+this.groupLevel;l.smask&&(n+="_smask_"+this.smaskCounter++%2);const s=this.cachedCanvases.getCanvas(n,Q,a),R=s.context;R.translate(-c,-W),R.transform(...Z),l.smask?this.smaskStack.push({canvas:s.canvas,context:R,offsetX:c,offsetY:W,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(c,W),U.save()),r0(U,R),this.ctx=R,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 F=sl(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...F);const t=j.getAxialAlignedBoundingBox([0,0,U.canvas.width,U.canvas.height],F);this.ctx.drawImage(U.canvas,0,0),this.ctx.restore(),this.compose(t)}}beginAnnotation(l,U,Z,F,t){if(b(this,PQ,PR).call(this),IV(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),U){const c=U[2]-U[0],W=U[3]-U[1];if(t&&this.annotationCanvasMap){Z=Z.slice(),Z[4]-=U[0],Z[5]-=U[1],U=U.slice(),U[0]=U[1]=0,U[2]=c,U[3]=W;const[Q,a]=j.singularValueDecompose2dScale(sl(this.ctx)),{viewportScale:n}=this,s=Math.ceil(c*this.outputScaleX*n),R=Math.ceil(W*this.outputScaleY*n);this.annotationCanvas=this.canvasFactory.create(s,R);const{canvas:N,context:h}=this.annotationCanvas;this.annotationCanvasMap.set(l,N),this.annotationCanvas.savedCtx=this.ctx,this.ctx=h,this.ctx.save(),this.ctx.setTransform(Q,0,0,-a,0,W*a),IV(this.ctx)}else IV(this.ctx),this.ctx.rect(U[0],U[1],c,W),this.ctx.clip(),this.endPath()}this.current=new $b(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...Z),this.transform(...F)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),b(this,fQ,fR).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,F=this.processingType3;if(F&&(F.compiled===void 0&&(F.compiled=ZG(l)),F.compiled)){F.compiled(Z);return}const t=this._createMaskCanvas(l),c=t.canvas;Z.save(),Z.setTransform(1,0,0,1,0,0),Z.drawImage(c,t.offsetX,t.offsetY),Z.restore(),this.compose()}paintImageMaskXObjectRepeat(l,U,Z=0,F=0,t,c){if(!this.contentVisible)return;l=this.getObject(l.data,l);const W=this.ctx;W.save();const Q=sl(W);W.transform(U,Z,F,t,0,0);const a=this._createMaskCanvas(l);W.setTransform(1,0,0,1,a.offsetX-Q[4],a.offsetY-Q[5]);for(let n=0,s=c.length;n<s;n+=2){const R=j.transform(Q,[U,Z,F,t,c[n],c[n+1]]),[N,h]=j.applyTransform([0,0],R);W.drawImage(a.canvas,N,h)}W.restore(),this.compose()}paintImageMaskXObjectGroup(l){if(!this.contentVisible)return;const U=this.ctx,Z=this.current.fillColor,F=this.current.patternFill;for(const t of l){const{data:c,width:W,height:Q,transform:a}=t,n=this.cachedCanvases.getCanvas("maskCanvas",W,Q),s=n.context;s.save();const R=this.getObject(c,t);Um(s,R),s.globalCompositeOperation="source-in",s.fillStyle=F?Z.getPattern(s,this,ad(U),ZU.FILL):Z,s.fillRect(0,0,W,Q),s.restore(),U.save(),U.transform(...a),U.scale(1,-1),DV(U,n.canvas,0,0,W,Q,0,-1,1,1),U.restore()}this.compose()}paintImageXObject(l){if(!this.contentVisible)return;const U=this.getObject(l);if(!U){A("Dependent image isn't ready yet");return}this.paintInlineImageXObject(U)}paintImageXObjectRepeat(l,U,Z,F){if(!this.contentVisible)return;const t=this.getObject(l);if(!t){A("Dependent image isn't ready yet");return}const c=t.width,W=t.height,Q=[];for(let a=0,n=F.length;a<n;a+=2)Q.push({transform:[U,0,0,Z,F[a],F[a+1]],x:0,y:0,w:c,h:W});this.paintInlineImageXObjectGroup(t,Q)}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:F}=l,t=this.cachedCanvases.getCanvas("inlineImage",Z,F),c=t.context;return c.filter=this.current.transferMaps,c.drawImage(U,0,0),c.filter="none",t.canvas}paintInlineImageXObject(l){if(!this.contentVisible)return;const U=l.width,Z=l.height,F=this.ctx;if(this.save(),!_l){const{filter:W}=F;W!=="none"&&W!==""&&(F.filter="none")}F.scale(1/U,-1/Z);let t;if(l.bitmap)t=this.applyTransferMapsToBitmap(l);else if(typeof HTMLElement=="function"&&l instanceof HTMLElement||!l.data)t=l;else{const W=this.cachedCanvases.getCanvas("inlineImage",U,Z).context;lm(W,l),t=this.applyTransferMapsToCanvas(W)}const c=this._scaleImage(t,ad(F));F.imageSmoothingEnabled=dm(sl(F),l.interpolate),DV(F,c.img,0,0,c.paintWidth,c.paintHeight,0,-Z,U,Z),this.compose(),this.restore()}paintInlineImageXObjectGroup(l,U){if(!this.contentVisible)return;const Z=this.ctx;let F;if(l.bitmap)F=l.bitmap;else{const t=l.width,c=l.height,W=this.cachedCanvases.getCanvas("inlineImage",t,c).context;lm(W,l),F=this.applyTransferMapsToCanvas(W)}for(const t of U)Z.save(),Z.transform(...t.transform),Z.scale(1,-1),DV(Z,F,t.x,t.y,t.w,t.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===Zm?Z.clip("evenodd"):Z.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),Z.beginPath()}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const l=sl(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]),F=Math.hypot(l[1],l[3]);this._cachedGetSinglePixelWidth=Math.max(Z,F)/U}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:l}=this.current,{a:U,b:Z,c:F,d:t}=this.ctx.getTransform();let c,W;if(Z===0&&F===0){const Q=Math.abs(U),a=Math.abs(t);if(Q===a)if(l===0)c=W=1/Q;else{const n=Q*l;c=W=n<1?1/n:1}else if(l===0)c=1/Q,W=1/a;else{const n=Q*l,s=a*l;c=n<1?1/n:1,W=s<1?1/s:1}}else{const Q=Math.abs(U*t-Z*F),a=Math.hypot(U,Z),n=Math.hypot(F,t);if(l===0)c=n/Q,W=a/Q;else{const s=l*Q;c=n>s?n/s:1,W=a>s?a/s:1}}this._cachedScaleForStroking[0]=c,this._cachedScaleForStroking[1]=W}return this._cachedScaleForStroking}rescaleAndStroke(l){const{ctx:U}=this,{lineWidth:Z}=this.current,[F,t]=this.getScaleForStroking();if(U.lineWidth=Z||1,F===1&&t===1){U.stroke();return}const c=U.getLineDash();if(l&&U.save(),U.scale(F,t),c.length>0){const W=Math.max(F,t);U.setLineDash(c.map(Q=>Q/W)),U.lineDashOffset/=W}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}};PQ=new WeakSet,PR=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)},fQ=new WeakSet,fR=function(){if(this.pageColors){const d=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(d!=="none"){const l=this.ctx.filter;this.ctx.filter=d,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=l}}};let AQ=WG;for(const d in wU)AQ.prototype[d]!==void 0&&(AQ.prototype[wU[d]]=AQ.prototype[d]);var EV,wV,CV;let p0=(EV=class{static get workerPort(){return V(this,wV)}static set workerPort(d){if(!(typeof Worker<"u"&&d instanceof Worker)&&d!==null)throw new Error("Invalid `workerPort` type.");m(this,wV,d)}static get workerSrc(){return V(this,CV)}static set workerSrc(d){if(typeof d!="string")throw new Error("Invalid `workerSrc` type.");m(this,CV,d)}},wV=new WeakMap,CV=new WeakMap,i(EV,wV,null),i(EV,CV,""),EV);const xV={UNKNOWN:0,DATA:1,ERROR:2},bl={UNKNOWN:0,CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function hU(d){switch(d instanceof Error||typeof d=="object"&&d!==null||tl('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),d.name){case"AbortException":return new CF(d.message);case"MissingPDFException":return new wF(d.message);case"PasswordException":return new RR(d.message,d.code);case"UnexpectedResponseException":return new Bs(d.message,d.status);case"UnknownErrorException":return new NR(d.message,d.details);default:return new NR(d.message,d.toString())}}var AR,Q2,_R,a2,Xc,rV;class Yc{constructor(l,U,Z){i(this,AR),i(this,_R),i(this,Xc),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=F=>{const t=F.data;if(t.targetName!==this.sourceName)return;if(t.stream){b(this,_R,a2).call(this,t);return}if(t.callback){const W=t.callbackId,Q=this.callbackCapabilities[W];if(!Q)throw new Error(`Cannot resolve callback ${W}`);if(delete this.callbackCapabilities[W],t.callback===xV.DATA)Q.resolve(t.data);else if(t.callback===xV.ERROR)Q.reject(hU(t.reason));else throw new Error("Unexpected callback case");return}const c=this.actionHandler[t.action];if(!c)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const W=this.sourceName,Q=t.sourceName;new Promise(function(a){a(c(t.data))}).then(function(a){Z.postMessage({sourceName:W,targetName:Q,callback:xV.DATA,callbackId:t.callbackId,data:a})},function(a){Z.postMessage({sourceName:W,targetName:Q,callback:xV.ERROR,callbackId:t.callbackId,reason:hU(a)})});return}if(t.streamId){b(this,AR,Q2).call(this,t);return}c(t.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 F=this.callbackId++,t=Promise.withResolvers();this.callbackCapabilities[F]=t;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,callbackId:F,data:U},Z)}catch(c){t.reject(c)}return t.promise}sendWithStream(l,U,Z,F){const t=this.streamId++,c=this.sourceName,W=this.targetName,Q=this.comObj;return new ReadableStream({start:a=>{const n=Promise.withResolvers();return this.streamControllers[t]={controller:a,startCall:n,pullCall:null,cancelCall:null,isClosed:!1},Q.postMessage({sourceName:c,targetName:W,action:l,streamId:t,data:U,desiredSize:a.desiredSize},F),n.promise},pull:a=>{const n=Promise.withResolvers();return this.streamControllers[t].pullCall=n,Q.postMessage({sourceName:c,targetName:W,stream:bl.PULL,streamId:t,desiredSize:a.desiredSize}),n.promise},cancel:a=>{Tl(a instanceof Error,"cancel must have a valid reason");const n=Promise.withResolvers();return this.streamControllers[t].cancelCall=n,this.streamControllers[t].isClosed=!0,Q.postMessage({sourceName:c,targetName:W,stream:bl.CANCEL,streamId:t,reason:hU(a)}),n.promise}},Z)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}AR=new WeakSet,Q2=function(d){const l=d.streamId,U=this.sourceName,Z=d.sourceName,F=this.comObj,t=this,c=this.actionHandler[d.action],W={enqueue(Q,a=1,n){if(this.isCancelled)return;const s=this.desiredSize;this.desiredSize-=a,s>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),F.postMessage({sourceName:U,targetName:Z,stream:bl.ENQUEUE,streamId:l,chunk:Q},n)},close(){this.isCancelled||(this.isCancelled=!0,F.postMessage({sourceName:U,targetName:Z,stream:bl.CLOSE,streamId:l}),delete t.streamSinks[l])},error(Q){Tl(Q instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,F.postMessage({sourceName:U,targetName:Z,stream:bl.ERROR,streamId:l,reason:hU(Q)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:d.desiredSize,ready:null};W.sinkCapability.resolve(),W.ready=W.sinkCapability.promise,this.streamSinks[l]=W,new Promise(function(Q){Q(c(d.data,W))}).then(function(){F.postMessage({sourceName:U,targetName:Z,stream:bl.START_COMPLETE,streamId:l,success:!0})},function(Q){F.postMessage({sourceName:U,targetName:Z,stream:bl.START_COMPLETE,streamId:l,reason:hU(Q)})})},_R=new WeakSet,a2=function(d){const l=d.streamId,U=this.sourceName,Z=d.sourceName,F=this.comObj,t=this.streamControllers[l],c=this.streamSinks[l];switch(d.stream){case bl.START_COMPLETE:d.success?t.startCall.resolve():t.startCall.reject(hU(d.reason));break;case bl.PULL_COMPLETE:d.success?t.pullCall.resolve():t.pullCall.reject(hU(d.reason));break;case bl.PULL:if(!c){F.postMessage({sourceName:U,targetName:Z,stream:bl.PULL_COMPLETE,streamId:l,success:!0});break}c.desiredSize<=0&&d.desiredSize>0&&c.sinkCapability.resolve(),c.desiredSize=d.desiredSize,new Promise(function(W){var Q;W((Q=c.onPull)==null?void 0:Q.call(c))}).then(function(){F.postMessage({sourceName:U,targetName:Z,stream:bl.PULL_COMPLETE,streamId:l,success:!0})},function(W){F.postMessage({sourceName:U,targetName:Z,stream:bl.PULL_COMPLETE,streamId:l,reason:hU(W)})});break;case bl.ENQUEUE:if(Tl(t,"enqueue should have stream controller"),t.isClosed)break;t.controller.enqueue(d.chunk);break;case bl.CLOSE:if(Tl(t,"close should have stream controller"),t.isClosed)break;t.isClosed=!0,t.controller.close(),b(this,Xc,rV).call(this,t,l);break;case bl.ERROR:Tl(t,"error should have stream controller"),t.controller.error(hU(d.reason)),b(this,Xc,rV).call(this,t,l);break;case bl.CANCEL_COMPLETE:d.success?t.cancelCall.resolve():t.cancelCall.reject(hU(d.reason)),b(this,Xc,rV).call(this,t,l);break;case bl.CANCEL:if(!c)break;new Promise(function(W){var Q;W((Q=c.onCancel)==null?void 0:Q.call(c,hU(d.reason)))}).then(function(){F.postMessage({sourceName:U,targetName:Z,stream:bl.CANCEL_COMPLETE,streamId:l,success:!0})},function(W){F.postMessage({sourceName:U,targetName:Z,stream:bl.CANCEL_COMPLETE,streamId:l,reason:hU(W)})}),c.sinkCapability.reject(hU(d.reason)),c.isCancelled=!0,delete this.streamSinks[l];break;default:throw new Error("Unexpected stream case")}},Xc=new WeakSet,rV=function(d,l){return D(this,null,function*(){var U,Z,F;yield Promise.allSettled([(U=d.startCall)==null?void 0:U.promise,(Z=d.pullCall)==null?void 0:Z.promise,(F=d.cancelCall)==null?void 0:F.promise]),delete this.streamControllers[l]})};var bt,_Q;class VG{constructor({parsedData:l,rawData:U}){i(this,bt,void 0),i(this,_Q,void 0),m(this,bt,l),m(this,_Q,U)}getRaw(){return V(this,_Q)}get(l){var U;return(U=V(this,bt).get(l))!=null?U:null}getAll(){return tb(V(this,bt))}has(l){return V(this,bt).has(l)}}bt=new WeakMap,_Q=new WeakMap;const dZ=Symbol("INTERNAL");var qQ,$Q,la,pc;class QG{constructor(l,{name:U,intent:Z,usage:F}){i(this,qQ,!1),i(this,$Q,!1),i(this,la,!1),i(this,pc,!0),m(this,qQ,!!(l&XU.DISPLAY)),m(this,$Q,!!(l&XU.PRINT)),this.name=U,this.intent=Z,this.usage=F}get visible(){if(V(this,la))return V(this,pc);if(!V(this,pc))return!1;const{print:l,view:U}=this.usage;return V(this,qQ)?(U==null?void 0:U.viewState)!=="OFF":V(this,$Q)?(l==null?void 0:l.printState)!=="OFF":!0}_setVisible(l,U,Z=!1){l!==dZ&&tl("Internal method `_setVisible` called."),m(this,la,Z),m(this,pc,U)}}qQ=new WeakMap,$Q=new WeakMap,la=new WeakMap,pc=new WeakMap;var UF,Wl,Bc,uc,vn,qR;class aG{constructor(l,U=XU.DISPLAY){if(i(this,vn),i(this,UF,null),i(this,Wl,new Map),i(this,Bc,null),i(this,uc,null),this.renderingIntent=U,this.name=null,this.creator=null,l!==null){this.name=l.name,this.creator=l.creator,m(this,uc,l.order);for(const Z of l.groups)V(this,Wl).set(Z.id,new QG(U,Z));if(l.baseState==="OFF")for(const Z of V(this,Wl).values())Z._setVisible(dZ,!1);for(const Z of l.on)V(this,Wl).get(Z)._setVisible(dZ,!0);for(const Z of l.off)V(this,Wl).get(Z)._setVisible(dZ,!1);m(this,Bc,this.getHash())}}isVisible(l){if(V(this,Wl).size===0)return!0;if(!l)return ps("Optional content group not defined."),!0;if(l.type==="OCG")return V(this,Wl).has(l.id)?V(this,Wl).get(l.id).visible:(A(`Optional content group not found: ${l.id}`),!0);if(l.type==="OCMD"){if(l.expression)return b(this,vn,qR).call(this,l.expression);if(!l.policy||l.policy==="AnyOn"){for(const U of l.ids){if(!V(this,Wl).has(U))return A(`Optional content group not found: ${U}`),!0;if(V(this,Wl).get(U).visible)return!0}return!1}else if(l.policy==="AllOn"){for(const U of l.ids){if(!V(this,Wl).has(U))return A(`Optional content group not found: ${U}`),!0;if(!V(this,Wl).get(U).visible)return!1}return!0}else if(l.policy==="AnyOff"){for(const U of l.ids){if(!V(this,Wl).has(U))return A(`Optional content group not found: ${U}`),!0;if(!V(this,Wl).get(U).visible)return!0}return!1}else if(l.policy==="AllOff"){for(const U of l.ids){if(!V(this,Wl).has(U))return A(`Optional content group not found: ${U}`),!0;if(V(this,Wl).get(U).visible)return!1}return!0}return A(`Unknown optional content policy ${l.policy}.`),!0}return A(`Unknown group type ${l.type}.`),!0}setVisibility(l,U=!0){const Z=V(this,Wl).get(l);if(!Z){A(`Optional content group not found: ${l}`);return}Z._setVisible(dZ,!!U,!0),m(this,UF,null)}setOCGState({state:l,preserveRB:U}){let Z;for(const F of l){switch(F){case"ON":case"OFF":case"Toggle":Z=F;continue}const t=V(this,Wl).get(F);if(t)switch(Z){case"ON":t._setVisible(dZ,!0);break;case"OFF":t._setVisible(dZ,!1);break;case"Toggle":t._setVisible(dZ,!t.visible);break}}m(this,UF,null)}get hasInitialVisibility(){return V(this,Bc)===null||this.getHash()===V(this,Bc)}getOrder(){return V(this,Wl).size?V(this,uc)?V(this,uc).slice():[...V(this,Wl).keys()]:null}getGroups(){return V(this,Wl).size>0?tb(V(this,Wl)):null}getGroup(l){return V(this,Wl).get(l)||null}getHash(){if(V(this,UF)!==null)return V(this,UF);const l=new d2;for(const[U,Z]of V(this,Wl))l.update(`${U}:${Z.visible}`);return m(this,UF,l.hexdigest())}}UF=new WeakMap,Wl=new WeakMap,Bc=new WeakMap,uc=new WeakMap,vn=new WeakSet,qR=function(d){const l=d.length;if(l<2)return!0;const U=d[0];for(let Z=1;Z<l;Z++){const F=d[Z];let t;if(Array.isArray(F))t=b(this,vn,qR).call(this,F);else if(V(this,Wl).has(F))t=V(this,Wl).get(F).visible;else return A(`Optional content group not found: ${F}`),!0;switch(U){case"And":if(!t)return!1;break;case"Or":if(t)return!0;break;case"Not":return!t;default:return!0}}return U==="And"};class nG{constructor(l,{disableRange:U=!1,disableStream:Z=!1}){Tl(l,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:F,initialData:t,progressiveDone:c,contentDispositionFilename:W}=l;if(this._queuedChunks=[],this._progressiveDone=c,this._contentDispositionFilename=W,(t==null?void 0:t.length)>0){const Q=t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer;this._queuedChunks.push(Q)}this._pdfDataRangeTransport=l,this._isStreamingSupported=!Z,this._isRangeSupported=!U,this._contentLength=F,this._fullRequestReader=null,this._rangeReaders=[],l.addRangeListener((Q,a)=>{this._onReceiveData({begin:Q,chunk:a})}),l.addProgressListener((Q,a)=>{this._onProgress({loaded:Q,total:a})}),l.addProgressiveReadListener(Q=>{this._onReceiveData({chunk:Q})}),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 F=this._rangeReaders.some(function(t){return t._begin!==l?!1:(t._enqueue(Z),!0)});Tl(F,"_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,F,t;l.total===void 0?(Z=(U=this._rangeReaders[0])==null?void 0:U.onProgress)==null||Z.call(U,{loaded:l.loaded}):(t=(F=this._fullRequestReader)==null?void 0:F.onProgress)==null||t.call(F,{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(){Tl(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const l=this._queuedChunks;return this._queuedChunks=null,new sG(this,l,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=new iG(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 sG{constructor(l,U,Z=!1,F=null){this._stream=l,this._done=Z||!1,this._filename=ab(F)?F:null,this._queuedChunks=U||[],this._loaded=0;for(const t of this._queuedChunks)this._loaded+=t.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 D(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 iG{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 D(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 RG(d){let l=!0,U=Z("filename\\*","i").exec(d);if(U){U=U[1];let n=W(U);return n=unescape(n),n=Q(n),n=a(n),t(n)}if(U=c(d),U){const n=a(U);return t(n)}if(U=Z("filename","i").exec(d),U){U=U[1];let n=W(U);return n=a(n),t(n)}function Z(n,s){return new RegExp("(?:^|;)\\s*"+n+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',s)}function F(n,s){if(n){if(!/^[\x00-\xFF]+$/.test(s))return s;try{const R=new TextDecoder(n,{fatal:!0}),N=us(s);s=R.decode(N),l=!1}catch(R){}}return s}function t(n){return l&&/[\x80-\xff]/.test(n)&&(n=F("utf-8",n),l&&(n=F("iso-8859-1",n))),n}function c(n){const s=[];let R;const N=Z("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(R=N.exec(n))!==null;){let[,e,M,J]=R;if(e=parseInt(e,10),e in s){if(e===0)break;continue}s[e]=[M,J]}const h=[];for(let e=0;e<s.length&&e in s;++e){let[M,J]=s[e];J=W(J),M&&(J=unescape(J),e===0&&(J=Q(J))),h.push(J)}return h.join("")}function W(n){if(n.startsWith('"')){const s=n.slice(1).split('\\"');for(let R=0;R<s.length;++R){const N=s[R].indexOf('"');N!==-1&&(s[R]=s[R].slice(0,N),s.length=R+1),s[R]=s[R].replaceAll(/\\(.)/g,"$1")}n=s.join('"')}return n}function Q(n){const s=n.indexOf("'");if(s===-1)return n;const R=n.slice(0,s),N=n.slice(s+1).replace(/^[^']*'/,"");return F(R,N)}function a(n){return!n.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(n)?n:n.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(s,R,N,h){if(N==="q"||N==="Q")return h=h.replaceAll("_"," "),h=h.replaceAll(/=([0-9a-fA-F]{2})/g,function(e,M){return String.fromCharCode(parseInt(M,16))}),F(R,h);try{h=atob(h)}catch(e){}return F(R,h)})}return""}function ib({getResponseHeader:d,isHttp:l,rangeChunkSize:U,disableRange:Z}){const F={allowRangeRequests:!1,suggestedLength:void 0},t=parseInt(d("Content-Length"),10);return!Number.isInteger(t)||(F.suggestedLength=t,t<=2*U)||Z||!l||d("Accept-Ranges")!=="bytes"||(d("Content-Encoding")||"identity")!=="identity"||(F.allowRangeRequests=!0),F}function Rb(d){const l=d("Content-Disposition");if(l){let U=RG(l);if(U.includes("%"))try{U=decodeURIComponent(U)}catch(Z){}if(ab(U))return U}return null}function zs(d,l){return d===404||d===0&&l.startsWith("file:")?new wF('Missing PDF "'+l+'".'):new Bs(`Unexpected server response (${d}) while retrieving PDF "${l}".`,d)}function n2(d){return d===200||d===206}function s2(d,l,U){return{method:"GET",headers:d,signal:U.signal,mode:"cors",credentials:l?"include":"same-origin",redirect:"follow"}}function i2(d){const l=new Headers;for(const U in d){const Z=d[U];Z!==void 0&&l.append(U,Z)}return l}function R2(d){return d instanceof Uint8Array?d.buffer:d instanceof ArrayBuffer?d:(A(`getArrayBuffer - unexpected data format: ${d}`),new Uint8Array(d).buffer)}class Fm{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 Tl(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new NG(this),this._fullRequestReader}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=new hG(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 NG{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=i2(this._stream.httpHeaders);const Z=U.url;fetch(Z,s2(this._headers,this._withCredentials,this._abortController)).then(F=>{if(!n2(F.status))throw zs(F.status,Z);this._reader=F.body.getReader(),this._headersCapability.resolve();const t=Q=>F.headers.get(Q),{allowRangeRequests:c,suggestedLength:W}=ib({getResponseHeader:t,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=c,this._contentLength=W||this._contentLength,this._filename=Rb(t),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new CF("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 D(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:R2(U),done:!1})})}cancel(l){var U;(U=this._reader)==null||U.cancel(l),this._abortController.abort()}}class hG{constructor(l,U,Z){this._stream=l,this._reader=null,this._loaded=0;const F=l.source;this._withCredentials=F.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!F.disableStream,this._abortController=new AbortController,this._headers=i2(this._stream.httpHeaders),this._headers.append("Range",`bytes=${U}-${Z-1}`);const t=F.url;fetch(t,s2(this._headers,this._withCredentials,this._abortController)).then(c=>{if(!n2(c.status))throw zs(c.status,t);this._readCapability.resolve(),this._reader=c.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}read(){return D(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:R2(U),done:!1})})}cancel(l){var U;(U=this._reader)==null||U.cancel(l),this._abortController.abort()}}const ii=200,Ri=206;function bG(d){const l=d.response;return typeof l!="string"?l:us(l).buffer}class mG{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 F={begin:l,end:U};for(const t in Z)F[t]=Z[t];return this.request(F)}requestFull(l){return this.request(l)}request(l){const U=new XMLHttpRequest,Z=this.currXhrId++,F=this.pendingRequests[Z]={xhr:U};U.open("GET",this.url),U.withCredentials=this.withCredentials;for(const t in this.httpHeaders){const c=this.httpHeaders[t];c!==void 0&&U.setRequestHeader(t,c)}return this.isHttp&&"begin"in l&&"end"in l?(U.setRequestHeader("Range",`bytes=${l.begin}-${l.end-1}`),F.expectedStatus=Ri):F.expectedStatus=ii,U.responseType="arraybuffer",l.onError&&(U.onerror=function(t){l.onError(U.status)}),U.onreadystatechange=this.onStateChange.bind(this,Z),U.onprogress=this.onProgress.bind(this,Z),F.onHeadersReceived=l.onHeadersReceived,F.onDone=l.onDone,F.onError=l.onError,F.onProgress=l.onProgress,U.send(null),Z}onProgress(l,U){var Z;const F=this.pendingRequests[l];F&&((Z=F.onProgress)==null||Z.call(F,U))}onStateChange(l,U){var Z,F,t;const c=this.pendingRequests[l];if(!c)return;const W=c.xhr;if(W.readyState>=2&&c.onHeadersReceived&&(c.onHeadersReceived(),delete c.onHeadersReceived),W.readyState!==4||!(l in this.pendingRequests))return;if(delete this.pendingRequests[l],W.status===0&&this.isHttp){(Z=c.onError)==null||Z.call(c,W.status);return}const Q=W.status||ii;if(!(Q===ii&&c.expectedStatus===Ri)&&Q!==c.expectedStatus){(F=c.onError)==null||F.call(c,W.status);return}const a=bG(W);if(Q===Ri){const n=W.getResponseHeader("Content-Range"),s=/bytes (\d+)-(\d+)\/(\d+)/.exec(n);c.onDone({begin:parseInt(s[1],10),chunk:a})}else a?c.onDone({begin:0,chunk:a}):(t=c.onError)==null||t.call(c,W.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 eG{constructor(l){this._source=l,this._manager=new mG(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 Tl(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new MG(this._manager,this._source),this._fullRequestReader}getRangeReader(l,U){const Z=new JG(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 MG{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=c=>U.getResponseHeader(c),{allowRangeRequests:F,suggestedLength:t}=ib({getResponseHeader:Z,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});F&&(this._isRangeSupported=!0),this._contentLength=t||this._contentLength,this._filename=Rb(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=zs(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 D(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 JG{constructor(l,U,Z){this._manager=l;const F={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,F),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=zs(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 D(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 N2=/^file:\/\/\/[a-zA-Z]:\//;function GG(d){const l=Wd.get("url"),U=l.parse(d);return U.protocol==="file:"||U.host?U:/^[a-z]:[/\\]/i.test(d)?l.parse(`file:///${d}`):(U.host||(U.protocol="file:"),U)}class TG{constructor(l){this.source=l,this.url=GG(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 Tl(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=this.isFsUrl?new YG(this):new SG(this),this._fullRequestReader}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=this.isFsUrl?new pG(this,l,U):new XG(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 h2{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 D(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 CF("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class b2{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 D(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 Hn(d,l){return{protocol:d.protocol,auth:d.auth,host:d.hostname,port:d.port,path:d.path,method:"GET",headers:l}}class SG extends h2{constructor(l){super(l);const U=Z=>{if(Z.statusCode===404){const W=new wF(`Missing PDF "${this._url}".`);this._storedError=W,this._headersCapability.reject(W);return}this._headersCapability.resolve(),this._setReadableStream(Z);const F=W=>this._readableStream.headers[W.toLowerCase()],{allowRangeRequests:t,suggestedLength:c}=ib({getResponseHeader:F,isHttp:l.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=t,this._contentLength=c||this._contentLength,this._filename=Rb(F)};if(this._request=null,this._url.protocol==="http:"){const Z=Wd.get("http");this._request=Z.request(Hn(this._url,l.httpHeaders),U)}else{const Z=Wd.get("https");this._request=Z.request(Hn(this._url,l.httpHeaders),U)}this._request.on("error",Z=>{this._storedError=Z,this._headersCapability.reject(Z)}),this._request.end()}}class XG extends b2{constructor(l,U,Z){super(l),this._httpHeaders={};for(const t in l.httpHeaders){const c=l.httpHeaders[t];c!==void 0&&(this._httpHeaders[t]=c)}this._httpHeaders.Range=`bytes=${U}-${Z-1}`;const F=t=>{if(t.statusCode===404){const c=new wF(`Missing PDF "${this._url}".`);this._storedError=c;return}this._setReadableStream(t)};if(this._request=null,this._url.protocol==="http:"){const t=Wd.get("http");this._request=t.request(Hn(this._url,this._httpHeaders),F)}else{const t=Wd.get("https");this._request=t.request(Hn(this._url,this._httpHeaders),F)}this._request.on("error",t=>{this._storedError=t}),this._request.end()}}class YG extends h2{constructor(l){super(l);let U=decodeURIComponent(this._url.path);N2.test(this._url.href)&&(U=U.replace(/^\//,""));const Z=Wd.get("fs");Z.promises.lstat(U).then(F=>{this._contentLength=F.size,this._setReadableStream(Z.createReadStream(U)),this._headersCapability.resolve()},F=>{F.code==="ENOENT"&&(F=new wF(`Missing PDF "${U}".`)),this._storedError=F,this._headersCapability.reject(F)})}}class pG extends b2{constructor(l,U,Z){super(l);let F=decodeURIComponent(this._url.path);N2.test(this._url.href)&&(F=F.replace(/^\//,""));const t=Wd.get("fs");this._setReadableStream(t.createReadStream(F,{start:U,end:Z-1}))}}const BG=1e5,tU=30,uG=.8;var tm,xZ,RU,jV,OV,rZ,fd,gV,KV,_F,j0,O0,jZ,g0,vV,K0,qF,HV,PV,Bl,$F,lt,OZ,v0,Ni,cm,hi,Wm,fV,bi,H0,AV,mi,Vm,ei,Qm;let Pn=(Bl=class{constructor({textContentSource:d,container:l,viewport:U}){i(this,Ni),i(this,hi),i(this,fV),i(this,xZ,Promise.withResolvers()),i(this,RU,null),i(this,jV,!1),i(this,OV,!!((tm=globalThis.FontInspector)!=null&&tm.enabled)),i(this,rZ,null),i(this,fd,null),i(this,gV,0),i(this,KV,0),i(this,_F,null),i(this,j0,null),i(this,O0,0),i(this,jZ,0),i(this,g0,Object.create(null)),i(this,vV,[]),i(this,K0,null),i(this,qF,[]),i(this,HV,new WeakMap),i(this,PV,null);var Z;if(d instanceof ReadableStream)m(this,K0,d);else if(typeof d=="object")m(this,K0,new ReadableStream({start(Q){Q.enqueue(d),Q.close()}}));else throw new Error('No "textContentSource" parameter specified.');m(this,RU,m(this,j0,l)),m(this,jZ,U.scale*(globalThis.devicePixelRatio||1)),m(this,O0,U.rotation),m(this,fd,{prevFontSize:null,prevFontFamily:null,div:null,properties:null,ctx:null});const{pageWidth:F,pageHeight:t,pageX:c,pageY:W}=U.rawDims;m(this,PV,[1,0,0,-1,-c,W+t]),m(this,KV,F),m(this,gV,t),b(Z=Bl,mi,Vm).call(Z),IF(l,U),V(this,xZ).promise.catch(()=>{}).then(()=>{V(Bl,v0).delete(this),m(this,fd,null),m(this,g0,null)})}render(){const d=()=>{V(this,_F).read().then(({value:l,done:U})=>{var Z;if(U){V(this,xZ).resolve();return}(Z=V(this,rZ))!=null||m(this,rZ,l.lang),Object.assign(V(this,g0),l.styles),b(this,Ni,cm).call(this,l.items),d()},V(this,xZ).reject)};return m(this,_F,V(this,K0).getReader()),V(Bl,v0).add(this),d(),V(this,xZ).promise}update({viewport:d,onBefore:l=null}){var U;const Z=d.scale*(globalThis.devicePixelRatio||1),F=d.rotation;if(F!==V(this,O0)&&(l==null||l(),m(this,O0,F),IF(V(this,j0),{rotation:F})),Z!==V(this,jZ)){l==null||l(),m(this,jZ,Z);const t={prevFontSize:null,prevFontFamily:null,div:null,properties:null,ctx:b(U=Bl,H0,AV).call(U,V(this,rZ))};for(const c of V(this,qF))t.properties=V(this,HV).get(c),t.div=c,b(this,fV,bi).call(this,t)}}cancel(){var d;const l=new CF("TextLayer task cancelled.");(d=V(this,_F))==null||d.cancel(l).catch(()=>{}),m(this,_F,null),V(this,xZ).reject(l)}get textDivs(){return V(this,qF)}get textContentItemsStr(){return V(this,vV)}static cleanup(){if(!(V(this,v0).size>0)){V(this,$F).clear();for(const{canvas:d}of V(this,lt).values())d.remove();V(this,lt).clear()}}},xZ=new WeakMap,RU=new WeakMap,jV=new WeakMap,OV=new WeakMap,rZ=new WeakMap,fd=new WeakMap,gV=new WeakMap,KV=new WeakMap,_F=new WeakMap,j0=new WeakMap,O0=new WeakMap,jZ=new WeakMap,g0=new WeakMap,vV=new WeakMap,K0=new WeakMap,qF=new WeakMap,HV=new WeakMap,PV=new WeakMap,$F=new WeakMap,lt=new WeakMap,OZ=new WeakMap,v0=new WeakMap,Ni=new WeakSet,cm=function(d){var t;var l,U;if(V(this,jV))return;(t=(U=V(this,fd)).ctx)!=null||(U.ctx=b(l=Bl,H0,AV).call(l,V(this,rZ)));const Z=V(this,qF),F=V(this,vV);for(const c of d){if(Z.length>BG){A("Ignoring additional textDivs for performance reasons."),m(this,jV,!0);return}if(c.str===void 0){if(c.type==="beginMarkedContentProps"||c.type==="beginMarkedContent"){const W=V(this,RU);m(this,RU,document.createElement("span")),V(this,RU).classList.add("markedContent"),c.id!==null&&V(this,RU).setAttribute("id",`${c.id}`),W.append(V(this,RU))}else c.type==="endMarkedContent"&&m(this,RU,V(this,RU).parentNode);continue}F.push(c.str),b(this,hi,Wm).call(this,c)}},hi=new WeakSet,Wm=function(d){var l;const U=document.createElement("span"),Z={angle:0,canvasWidth:0,hasText:d.str!=="",hasEOL:d.hasEOL,fontSize:0};V(this,qF).push(U);const F=j.transform(V(this,PV),d.transform);let t=Math.atan2(F[1],F[0]);const c=V(this,g0)[d.fontName];c.vertical&&(t+=Math.PI/2);const W=V(this,OV)&&c.fontSubstitution||c.fontFamily,Q=Math.hypot(F[2],F[3]),a=Q*b(l=Bl,ei,Qm).call(l,W,V(this,rZ));let n,s;t===0?(n=F[4],s=F[5]-a):(n=F[4]+a*Math.sin(t),s=F[5]-a*Math.cos(t));const R="calc(var(--scale-factor)*",N=U.style;V(this,RU)===V(this,j0)?(N.left=`${(100*n/V(this,KV)).toFixed(2)}%`,N.top=`${(100*s/V(this,gV)).toFixed(2)}%`):(N.left=`${R}${n.toFixed(2)}px)`,N.top=`${R}${s.toFixed(2)}px)`),N.fontSize=`${R}${(V(Bl,OZ)*Q).toFixed(2)}px)`,N.fontFamily=W,Z.fontSize=Q,U.setAttribute("role","presentation"),U.textContent=d.str,U.dir=d.dir,V(this,OV)&&(U.dataset.fontName=c.fontSubstitutionLoadedName||d.fontName),t!==0&&(Z.angle=t*(180/Math.PI));let h=!1;if(d.str.length>1)h=!0;else if(d.str!==" "&&d.transform[0]!==d.transform[3]){const e=Math.abs(d.transform[0]),M=Math.abs(d.transform[3]);e!==M&&Math.max(e,M)/Math.min(e,M)>1.5&&(h=!0)}if(h&&(Z.canvasWidth=c.vertical?d.height:d.width),V(this,HV).set(U,Z),V(this,fd).div=U,V(this,fd).properties=Z,b(this,fV,bi).call(this,V(this,fd)),Z.hasText&&V(this,RU).append(U),Z.hasEOL){const e=document.createElement("br");e.setAttribute("role","presentation"),V(this,RU).append(e)}},fV=new WeakSet,bi=function(d){const{div:l,properties:U,ctx:Z,prevFontSize:F,prevFontFamily:t}=d,{style:c}=l;let W="";if(V(Bl,OZ)>1&&(W=`scale(${1/V(Bl,OZ)})`),U.canvasWidth!==0&&U.hasText){const{fontFamily:Q}=c,{canvasWidth:a,fontSize:n}=U;(F!==n||t!==Q)&&(Z.font=`${n*V(this,jZ)}px ${Q}`,d.prevFontSize=n,d.prevFontFamily=Q);const{width:s}=Z.measureText(l.textContent);s>0&&(W=`scaleX(${a*V(this,jZ)/s}) ${W}`)}U.angle!==0&&(W=`rotate(${U.angle}deg) ${W}`),W.length>0&&(c.transform=W)},H0=new WeakSet,AV=function(d=null){let l=V(this,lt).get(d||(d=""));if(!l){const U=document.createElement("canvas");U.className="hiddenCanvasElement",U.lang=d,document.body.append(U),l=U.getContext("2d",{alpha:!1,willReadFrequently:!0}),V(this,lt).set(d,l)}return l},mi=new WeakSet,Vm=function(){if(V(this,OZ)!==null)return;const d=document.createElement("div");d.style.opacity=0,d.style.lineHeight=1,d.style.fontSize="1px",d.textContent="X",document.body.append(d),m(this,OZ,d.getBoundingClientRect().height),d.remove()},ei=new WeakSet,Qm=function(d,l){const U=V(this,$F).get(d);if(U)return U;const Z=b(this,H0,AV).call(this,l),F=Z.font;Z.canvas.width=Z.canvas.height=tU,Z.font=`${tU}px ${d}`;const t=Z.measureText("");let c=t.fontBoundingBoxAscent,W=Math.abs(t.fontBoundingBoxDescent);if(c){const n=c/(c+W);return V(this,$F).set(d,n),Z.canvas.width=Z.canvas.height=0,Z.font=F,n}Z.strokeStyle="red",Z.clearRect(0,0,tU,tU),Z.strokeText("g",0,0);let Q=Z.getImageData(0,0,tU,tU).data;W=0;for(let n=Q.length-1-3;n>=0;n-=4)if(Q[n]>0){W=Math.ceil(n/4/tU);break}Z.clearRect(0,0,tU,tU),Z.strokeText("A",0,tU),Q=Z.getImageData(0,0,tU,tU).data,c=0;for(let n=0,s=Q.length;n<s;n+=4)if(Q[n]>0){c=tU-Math.floor(n/4/tU);break}Z.canvas.width=Z.canvas.height=0,Z.font=F;const a=c?c/(c+W):uG;return V(this,$F).set(d,a),a},i(Bl,H0),i(Bl,mi),i(Bl,ei),i(Bl,$F,new Map),i(Bl,lt,new Map),i(Bl,OZ,null),i(Bl,v0,new Set),Bl);function oG(){Ce("`renderTextLayer`, please use `TextLayer` instead.");const Q=arguments[0],{textContentSource:d,container:l,viewport:U}=Q,Z=Jb(Q,["textContentSource","container","viewport"]),F=Object.keys(Z);F.length>0&&A("Ignoring `renderTextLayer` parameters: "+F.join(", "));const t=new Pn({textContentSource:d,container:l,viewport:U}),{textDivs:c,textContentItemsStr:W}=t;return{promise:t.render(),textDivs:c,textContentItemsStr:W}}function yG(){Ce("`updateTextLayer`, please use `TextLayer` instead.")}class AW{static textContent(l){const U=[],Z={items:U,styles:Object.create(null)};function F(t){var c;if(!t)return;let W=null;const Q=t.name;if(Q==="#text")W=t.value;else if(AW.shouldBuildText(Q))(c=t==null?void 0:t.attributes)!=null&&c.textContent?W=t.attributes.textContent:t.value&&(W=t.value);else return;if(W!==null&&U.push({str:W}),!!t.children)for(const a of t.children)F(a)}return F(l),Z}static shouldBuildText(l){return!(l==="textarea"||l==="input"||l==="option"||l==="select")}}const kG=65536,LG=100,zG=5e3,DG=_l?gJ:BJ,IG=_l?KJ:Ee,EG=_l?OJ:pJ,wG=_l?vJ:we;function CG(d={}){var Vd,x;typeof d=="string"||d instanceof URL?d={url:d}:(d instanceof ArrayBuffer||ArrayBuffer.isView(d))&&(d={data:d});const l=new jG,{docId:U}=l,Z=d.url?xG(d.url):null,F=d.data?rG(d.data):null,t=d.httpHeaders||null,c=d.withCredentials===!0,W=(Vd=d.password)!=null?Vd:null,Q=d.range instanceof M2?d.range:null,a=Number.isInteger(d.rangeChunkSize)&&d.rangeChunkSize>0?d.rangeChunkSize:kG;let n=d.worker instanceof Ua?d.worker:null;const s=d.verbosity,R=typeof d.docBaseUrl=="string"&&!Qb(d.docBaseUrl)?d.docBaseUrl:null,N=typeof d.cMapUrl=="string"?d.cMapUrl:null,h=d.cMapPacked!==!1,e=d.CMapReaderFactory||IG,M=typeof d.standardFontDataUrl=="string"?d.standardFontDataUrl:null,J=d.StandardFontDataFactory||wG,T=d.stopAtErrors!==!0,G=Number.isInteger(d.maxImageSize)&&d.maxImageSize>-1?d.maxImageSize:-1,Y=d.isEvalSupported!==!1,S=typeof d.isOffscreenCanvasSupported=="boolean"?d.isOffscreenCanvasSupported:!_l,X=Number.isInteger(d.canvasMaxAreaInBytes)?d.canvasMaxAreaInBytes:-1,B=typeof d.disableFontFace=="boolean"?d.disableFontFace:_l,k=d.fontExtraProperties===!0,p=d.enableXfa===!0,o=d.ownerDocument||globalThis.document,y=d.disableRange===!0,I=d.disableStream===!0,E=d.disableAutoFetch===!0,O=d.pdfBug===!0,r=d.enableHWA===!0,u=Q?Q.length:(x=d.length)!=null?x:NaN,w=typeof d.useSystemFonts=="boolean"?d.useSystemFonts:!_l&&!B,_=typeof d.useWorkerFetch=="boolean"?d.useWorkerFetch:e===Ee&&J===we&&N&&M&&bc(N,document.baseURI)&&bc(M,document.baseURI),Ql=d.canvasFactory||new DG({ownerDocument:o,enableHWA:r}),Ml=d.filterFactory||new EG({docId:U,ownerDocument:o}),FU=null;NJ(s);const cl={canvasFactory:Ql,filterFactory:Ml};if(_||(cl.cMapReaderFactory=new e({baseUrl:N,isCompressed:h}),cl.standardFontDataFactory=new J({baseUrl:M})),!n){const L={verbosity:s,port:p0.workerPort};n=L.port?Ua.fromPort(L):new Ua(L),l._worker=n}const al={docId:U,apiVersion:"4.4.168",data:F,password:W,disableAutoFetch:E,rangeChunkSize:a,length:u,docBaseUrl:R,enableXfa:p,evaluatorOptions:{maxImageSize:G,disableFontFace:B,ignoreErrors:T,isEvalSupported:Y,isOffscreenCanvasSupported:S,canvasMaxAreaInBytes:X,fontExtraProperties:k,useSystemFonts:w,cMapUrl:_?N:null,standardFontDataUrl:_?M:null}},Od={disableFontFace:B,fontExtraProperties:k,ownerDocument:o,pdfBug:O,styleElement:FU,loadingParams:{disableAutoFetch:E,enableXfa:p}};return n.promise.then(function(){if(l.destroyed)throw new Error("Loading aborted");if(n.destroyed)throw new Error("Worker was destroyed");const L=n.messageHandler.sendWithPromise("GetDocRequest",al,F?[F.buffer]:null);let C;if(Q)C=new nG(Q,{disableRange:y,disableStream:I});else if(!F){if(!Z)throw new Error("getDocument - no `url` parameter provided.");C=(v=>_l?function(){return typeof fetch<"u"&&typeof Response<"u"&&"body"in Response.prototype}()&&bc(v.url)?new Fm(v):new TG(v):bc(v.url)?new Fm(v):new eG(v))({url:Z,length:u,httpHeaders:t,withCredentials:c,rangeChunkSize:a,disableRange:y,disableStream:I})}return L.then(v=>{if(l.destroyed)throw new Error("Loading aborted");if(n.destroyed)throw new Error("Worker was destroyed");const Zl=new Yc(U,v,n.port),K=new vG(Zl,l,C,Od,cl);l._transport=K,Zl.send("Ready",null)})}).catch(l._capability.reject),l}function xG(d){if(d instanceof URL)return d.href;try{return new URL(d,window.location).href}catch(l){if(_l&&typeof d=="string")return d}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function rG(d){if(_l&&typeof Buffer<"u"&&d instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(d instanceof Uint8Array&&d.byteLength===d.buffer.byteLength)return d;if(typeof d=="string")return us(d);if(d instanceof ArrayBuffer||ArrayBuffer.isView(d)||typeof d=="object"&&!isNaN(d==null?void 0:d.length))return new Uint8Array(d);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function am(d){return typeof d=="object"&&Number.isInteger(d==null?void 0:d.num)&&d.num>=0&&Number.isInteger(d==null?void 0:d.gen)&&d.gen>=0}var $R;const m2=class e2{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${bU(e2,$R)._++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}destroy(){return D(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(F){throw(Z=this._worker)!=null&&Z.port&&delete this._worker._pendingDestroy,F}this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)})}};$R=new WeakMap,i(m2,$R,0);let jG=m2,M2=class{constructor(d,l,U=!1,Z=null){this.length=d,this.initialData=l,this.progressiveDone=U,this.contentDispositionFilename=Z,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(d){this._rangeListeners.push(d)}addProgressListener(d){this._progressListeners.push(d)}addProgressiveReadListener(d){this._progressiveReadListeners.push(d)}addProgressiveDoneListener(d){this._progressiveDoneListeners.push(d)}onDataRange(d,l){for(const U of this._rangeListeners)U(d,l)}onDataProgress(d,l){this._readyCapability.promise.then(()=>{for(const U of this._progressListeners)U(d,l)})}onDataProgressiveRead(d){this._readyCapability.promise.then(()=>{for(const l of this._progressiveReadListeners)l(d)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const d of this._progressiveDoneListeners)d()})}transportReady(){this._readyCapability.resolve()}requestDataRange(d,l){tl("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class OG{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 Ul(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()}}var dF,eZ,GF,_t,mW,fn;class gG{constructor(l,U,Z,F=!1){i(this,GF),i(this,mW),i(this,dF,null),i(this,eZ,!1),this._pageIndex=l,this._pageInfo=U,this._transport=Z,this._stats=F?new yb:null,this._pdfBug=F,this.commonObjs=Z.commonObjs,this.objs=new J2,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:F=0,dontFlip:t=!1}={}){return new lV({viewBox:this.view,scale:l,rotation:U,offsetX:Z,offsetY:F,dontFlip:t})}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 Ul(this,"isPureXfa",!!this._transport._htmlForXfa)}getXfa(){return D(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:F=hZ.ENABLE,transform:t=null,background:c=null,optionalContentConfigPromise:W=null,annotationCanvasMap:Q=null,pageColors:a=null,printAnnotationStorage:n=null}){var s,R;(s=this._stats)==null||s.time("Overall");const N=this._transport.getRenderingIntent(Z,F,n),{renderingIntent:h,cacheKey:e}=N;m(this,eZ,!1),b(this,mW,fn).call(this),W||(W=this._transport.getOptionalContentConfig(h));let M=this._intentStates.get(e);M||(M=Object.create(null),this._intentStates.set(e,M)),M.streamReaderCancelTimeout&&(clearTimeout(M.streamReaderCancelTimeout),M.streamReaderCancelTimeout=null);const J=!!(h&XU.PRINT);M.displayReadyCapability||(M.displayReadyCapability=Promise.withResolvers(),M.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(R=this._stats)==null||R.time("Page Request"),this._pumpOperatorList(N));const T=S=>{var X;M.renderTasks.delete(G),(this._maybeCleanupAfterRender||J)&&m(this,eZ,!0),b(this,GF,_t).call(this,!J),S?(G.capability.reject(S),this._abortOperatorList({intentState:M,reason:S instanceof Error?S:new Error(S)})):G.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(X=globalThis.Stats)!=null&&X.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},G=new PG({callback:T,params:{canvasContext:l,viewport:U,transform:t,background:c},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:Q,operatorList:M.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!J,pdfBug:this._pdfBug,pageColors:a});(M.renderTasks||(M.renderTasks=new Set)).add(G);const Y=G.task;return Promise.all([M.displayReadyCapability.promise,W]).then(([S,X])=>{var B;if(this.destroyed){T();return}if((B=this._stats)==null||B.time("Rendering"),!(X.renderingIntent&h))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");G.initializeGraphics({transparency:S,optionalContentConfig:X}),G.operatorListChanged()}).catch(T),Y}getOperatorList({intent:l="display",annotationMode:U=hZ.ENABLE,printAnnotationStorage:Z=null}={}){var F;function t(){W.operatorList.lastChunk&&(W.opListReadCapability.resolve(W.operatorList),W.renderTasks.delete(Q))}const c=this._transport.getRenderingIntent(l,U,Z,!0);let W=this._intentStates.get(c.cacheKey);W||(W=Object.create(null),this._intentStates.set(c.cacheKey,W));let Q;return W.opListReadCapability||(Q=Object.create(null),Q.operatorListChanged=t,W.opListReadCapability=Promise.withResolvers(),(W.renderTasks||(W.renderTasks=new Set)).add(Q),W.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(F=this._stats)==null||F.time("Page Request"),this._pumpOperatorList(c)),W.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=>AW.textContent(Z));const U=this.streamTextContent(l);return new Promise(function(Z,F){function t(){c.read().then(function({value:Q,done:a}){var n;if(a){Z(W);return}(n=W.lang)!=null||(W.lang=Q.lang),Object.assign(W.styles,Q.styles),W.items.push(...Q.items),t()},F)}const c=U.getReader(),W={items:[],styles:Object.create(null),lang:null};t()})}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(),m(this,eZ,!1),b(this,mW,fn).call(this),Promise.all(l)}cleanup(l=!1){m(this,eZ,!0);const U=b(this,GF,_t).call(this,!1);return l&&U&&this._stats&&(this._stats=new yb),U}_startRenderPage(l,U){var Z,F;const t=this._intentStates.get(U);t&&((Z=this._stats)==null||Z.timeEnd("Page Request"),(F=t.displayReadyCapability)==null||F.resolve(l))}_renderPageChunk(l,U){for(let Z=0,F=l.length;Z<F;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&&b(this,GF,_t).call(this,!0)}_pumpOperatorList({renderingIntent:l,cacheKey:U,annotationStorageSerializable:Z}){const{map:F,transfer:t}=Z,c=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:l,cacheKey:U,annotationStorage:F},t).getReader(),W=this._intentStates.get(U);W.streamReader=c;const Q=()=>{c.read().then(({value:a,done:n})=>{if(n){W.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(a,W),Q())},a=>{if(W.streamReader=null,!this._transport.destroyed){if(W.operatorList){W.operatorList.lastChunk=!0;for(const n of W.renderTasks)n.operatorListChanged();b(this,GF,_t).call(this,!0)}if(W.displayReadyCapability)W.displayReadyCapability.reject(a);else if(W.opListReadCapability)W.opListReadCapability.reject(a);else throw a}})};Q()}_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 Vb){let F=LG;U.extraDelay>0&&U.extraDelay<1e3&&(F+=U.extraDelay),l.streamReaderCancelTimeout=setTimeout(()=>{l.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:l,reason:U,force:!0})},F);return}}if(l.streamReader.cancel(new CF(U.message)).catch(()=>{}),l.streamReader=null,!this._transport.destroyed){for(const[F,t]of this._intentStates)if(t===l){this._intentStates.delete(F);break}this.cleanup()}}}get stats(){return this._stats}}dF=new WeakMap,eZ=new WeakMap,GF=new WeakSet,_t=function(d=!1){if(b(this,mW,fn).call(this),!V(this,eZ)||this.destroyed)return!1;if(d)return m(this,dF,setTimeout(()=>{m(this,dF,null),b(this,GF,_t).call(this,!1)},zG)),!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(),m(this,eZ,!1),!0},mW=new WeakSet,fn=function(){V(this,dF)&&(clearTimeout(V(this,dF)),m(this,dF,null))};var mt,lN;class KG{constructor(){i(this,mt,new Set),i(this,lN,Promise.resolve())}postMessage(l,U){const Z={data:structuredClone(l,U?{transfer:U}:null)};V(this,lN).then(()=>{for(const F of V(this,mt))F.call(this,Z)})}addEventListener(l,U){V(this,mt).add(U)}removeEventListener(l,U){V(this,mt).delete(U)}terminate(){V(this,mt).clear()}}mt=new WeakMap,lN=new WeakMap;const yd={isWorkerDisabled:!1,fakeWorkerId:0};_l&&(yd.isWorkerDisabled=!0,p0.workerSrc||(p0.workerSrc="./pdf.worker.mjs")),yd.isSameOrigin=function(d,l){let U;try{if(U=new URL(d),!U.origin||U.origin==="null")return!1}catch(F){return!1}const Z=new URL(l,U);return U.origin===Z.origin},yd.createCDNWrapper=function(d){const l=`await import("${d}");`;return URL.createObjectURL(new Blob([l],{type:"text/javascript"}))};var MU,gZ,P0,_V,f0,qV;let Ua=(MU=class{constructor({name:d=null,port:l=null,verbosity:U=hJ()}={}){i(this,P0);var Z;if(this.name=d,this.destroyed=!1,this.verbosity=U,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,l){if((Z=V(MU,gZ))!=null&&Z.has(l))throw new Error("Cannot use more than one PDFWorker per port.");(V(MU,gZ)||m(MU,gZ,new WeakMap)).set(l,this),this._initializeFromPort(l);return}this._initialize()}get promise(){return _l?Promise.all([Wd.promise,this._readyCapability.promise]):this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(d){this._port=d,this._messageHandler=new Yc("main","worker",d),this._messageHandler.on("ready",function(){}),b(this,P0,_V).call(this)}_initialize(){if(yd.isWorkerDisabled||V(MU,f0,qV)){this._setupFakeWorker();return}let{workerSrc:d}=MU;try{yd.isSameOrigin(window.location.href,d)||(d=yd.createCDNWrapper(new URL(d,window.location).href));const l=new Worker(d,{type:"module"}),U=new Yc("main","worker",l),Z=()=>{F.abort(),U.destroy(),l.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},F=new AbortController;l.addEventListener("error",()=>{this._webWorker||Z()},{signal:F.signal}),U.on("test",c=>{if(F.abort(),this.destroyed||!c){Z();return}this._messageHandler=U,this._port=l,this._webWorker=l,b(this,P0,_V).call(this)}),U.on("ready",c=>{if(F.abort(),this.destroyed){Z();return}try{t()}catch(W){this._setupFakeWorker()}});const t=()=>{const c=new Uint8Array;U.send("test",c,[c.buffer])};t();return}catch(l){ps("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){yd.isWorkerDisabled||(A("Setting up fake worker."),yd.isWorkerDisabled=!0),MU._setupFakeWorkerGlobal.then(d=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const l=new KG;this._port=l;const U=`fake${yd.fakeWorkerId++}`,Z=new Yc(U+"_worker",U,l);d.setup(Z,l),this._messageHandler=new Yc(U,U+"_worker",l),b(this,P0,_V).call(this)}).catch(d=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${d.message}".`))})}destroy(){var d;this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),(d=V(MU,gZ))==null||d.delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}static fromPort(d){var l;if(!(d!=null&&d.port))throw new Error("PDFWorker.fromPort - invalid method signature.");const U=(l=V(this,gZ))==null?void 0:l.get(d.port);if(U){if(U._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return U}return new MU(d)}static get workerSrc(){if(p0.workerSrc)return p0.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Ul(this,"_setupFakeWorkerGlobal",D(this,null,function*(){return V(this,f0,qV)?V(this,f0,qV):(yield import(this.workerSrc)).WorkerMessageHandler}))}},gZ=new WeakMap,P0=new WeakSet,_V=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},f0=new WeakSet,qV=function(){var d;try{return((d=globalThis.pdfjsWorker)==null?void 0:d.WorkerMessageHandler)||null}catch(l){return null}},i(MU,f0),i(MU,gZ,void 0),MU);var MZ,Td,oc,yc,Sd,et,kc;class vG{constructor(l,U,Z,F,t){i(this,et),i(this,MZ,new Map),i(this,Td,new Map),i(this,oc,new Map),i(this,yc,new Map),i(this,Sd,null),this.messageHandler=l,this.loadingTask=U,this.commonObjs=new J2,this.fontLoader=new rJ({ownerDocument:F.ownerDocument,styleElement:F.styleElement}),this.loadingParams=F.loadingParams,this._params=F,this.canvasFactory=t.canvasFactory,this.filterFactory=t.filterFactory,this.cMapReaderFactory=t.cMapReaderFactory,this.standardFontDataFactory=t.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 Ul(this,"annotationStorage",new sb)}getRenderingIntent(l,U=hZ.ENABLE,Z=null,F=!1){let t=XU.DISPLAY,c=gR;switch(l){case"any":t=XU.ANY;break;case"display":break;case"print":t=XU.PRINT;break;default:A(`getRenderingIntent - invalid intent: ${l}`)}switch(U){case hZ.DISABLE:t+=XU.ANNOTATIONS_DISABLE;break;case hZ.ENABLE:break;case hZ.ENABLE_FORMS:t+=XU.ANNOTATIONS_FORMS;break;case hZ.ENABLE_STORAGE:t+=XU.ANNOTATIONS_STORAGE,c=(t&XU.PRINT&&Z instanceof F2?Z:this.annotationStorage).serializable;break;default:A(`getRenderingIntent - invalid annotationMode: ${U}`)}return F&&(t+=XU.OPLIST),{renderingIntent:t,cacheKey:`${t}_${c.hash}`,annotationStorageSerializable:c}}destroy(){var l;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(l=V(this,Sd))==null||l.reject(new Error("Worker was destroyed during onPassword callback"));const U=[];for(const F of V(this,Td).values())U.push(F._destroy());V(this,Td).clear(),V(this,oc).clear(),V(this,yc).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const Z=this.messageHandler.sendWithPromise("Terminate",null);return U.push(Z),Promise.all(U).then(()=>{var F;this.commonObjs.clear(),this.fontLoader.clear(),V(this,MZ).clear(),this.filterFactory.destroy(),Pn.cleanup(),(F=this._networkStream)==null||F.cancelAllRequests(new CF("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,F)=>{Tl(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}},F.onPull=()=>{this._fullReader.read().then(function({value:t,done:c}){if(c){F.close();return}Tl(t instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),F.enqueue(new Uint8Array(t),1,[t])}).catch(t=>{F.error(t)})},F.onCancel=t=>{this._fullReader.cancel(t),F.ready.catch(c=>{if(!this.destroyed)throw c})}}),l.on("ReaderHeadersReady",Z=>{const F=Promise.withResolvers(),t=this._fullReader;return t.headersReady.then(()=>{var c;(!t.isStreamingSupported||!t.isRangeSupported)&&(this._lastProgress&&((c=U.onProgress)==null||c.call(U,this._lastProgress)),t.onProgress=W=>{var Q;(Q=U.onProgress)==null||Q.call(U,{loaded:W.loaded,total:W.total})}),F.resolve({isStreamingSupported:t.isStreamingSupported,isRangeSupported:t.isRangeSupported,contentLength:t.contentLength})},F.reject),F.promise}),l.on("GetRangeReader",(Z,F)=>{Tl(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const t=this._networkStream.getRangeReader(Z.begin,Z.end);if(!t){F.close();return}F.onPull=()=>{t.read().then(function({value:c,done:W}){if(W){F.close();return}Tl(c instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),F.enqueue(new Uint8Array(c),1,[c])}).catch(c=>{F.error(c)})},F.onCancel=c=>{t.cancel(c),F.ready.catch(W=>{if(!this.destroyed)throw W})}}),l.on("GetDoc",({pdfInfo:Z})=>{this._numPages=Z.numPages,this._htmlForXfa=Z.htmlForXfa,delete Z.htmlForXfa,U._capability.resolve(new OG(Z,this))}),l.on("DocException",function(Z){let F;switch(Z.name){case"PasswordException":F=new RR(Z.message,Z.code);break;case"InvalidPDFException":F=new ye(Z.message);break;case"MissingPDFException":F=new wF(Z.message);break;case"UnexpectedResponseException":F=new Bs(Z.message,Z.status);break;case"UnknownErrorException":F=new NR(Z.message,Z.details);break;default:tl("DocException - expected a valid Error.")}U._capability.reject(F)}),l.on("PasswordRequest",Z=>{if(m(this,Sd,Promise.withResolvers()),U.onPassword){const F=t=>{t instanceof Error?V(this,Sd).reject(t):V(this,Sd).resolve({password:t})};try{U.onPassword(F,Z.code)}catch(t){V(this,Sd).reject(t)}}else V(this,Sd).reject(new RR(Z.message,Z.code));return V(this,Sd).promise}),l.on("DataLoaded",Z=>{var F;(F=U.onProgress)==null||F.call(U,{loaded:Z.length,total:Z.length}),this.downloadInfoCapability.resolve(Z)}),l.on("StartRenderPage",Z=>{this.destroyed||V(this,Td).get(Z.pageIndex)._startRenderPage(Z.transparency,Z.cacheKey)}),l.on("commonobj",([Z,F,t])=>{var c;if(this.destroyed||this.commonObjs.has(Z))return null;switch(F){case"Font":const{disableFontFace:W,fontExtraProperties:Q,pdfBug:a}=this._params;if("error"in t){const N=t.error;A(`Error during font loading: ${N}`),this.commonObjs.resolve(Z,N);break}const n=a&&(c=globalThis.FontInspector)!=null&&c.enabled?(N,h)=>globalThis.FontInspector.fontAdded(N,h):null,s=new jJ(t,{disableFontFace:W,inspectFont:n});this.fontLoader.bind(s).catch(()=>l.sendWithPromise("FontFallback",{id:Z})).finally(()=>{!Q&&s.data&&(s.data=null),this.commonObjs.resolve(Z,s)});break;case"CopyLocalImage":const{imageRef:R}=t;Tl(R,"The imageRef must be defined.");for(const N of V(this,Td).values())for(const[,h]of N.objs)if((h==null?void 0:h.ref)===R)return h.dataLen?(this.commonObjs.resolve(Z,structuredClone(h)),h.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(Z,t);break;default:throw new Error(`Got unknown common object type ${F}`)}return null}),l.on("obj",([Z,F,t,c])=>{var W;if(this.destroyed)return;const Q=V(this,Td).get(F);if(!Q.objs.has(Z)){if(Q._intentStates.size===0){(W=c==null?void 0:c.bitmap)==null||W.close();return}switch(t){case"Image":Q.objs.resolve(Z,c),(c==null?void 0:c.dataLen)>nJ&&(Q._maybeCleanupAfterRender=!0);break;case"Pattern":Q.objs.resolve(Z,c);break;default:throw new Error(`Got unknown object type ${t}`)}}}),l.on("DocProgress",Z=>{var F;this.destroyed||(F=U.onProgress)==null||F.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 F;var l;this.annotationStorage.size<=0&&A("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:(F=(l=this._fullReader)==null?void 0:l.filename)!=null?F: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=V(this,oc).get(U);if(Z)return Z;const F=this.messageHandler.sendWithPromise("GetPage",{pageIndex:U}).then(t=>{if(this.destroyed)throw new Error("Transport destroyed");t.refStr&&V(this,yc).set(t.refStr,l);const c=new gG(U,t,this,this._params.pdfBug);return V(this,Td).set(U,c),c});return V(this,oc).set(U,F),F}getPageIndex(l){return am(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 b(this,et,kc).call(this,"GetFieldObjects")}hasJSActions(){return b(this,et,kc).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 b(this,et,kc).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 b(this,et,kc).call(this,"GetOptionalContentConfig").then(U=>new aG(U,l))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const l="GetMetadata",U=V(this,MZ).get(l);if(U)return U;const Z=this.messageHandler.sendWithPromise(l,null).then(F=>{var W,Q;var t,c;return{info:F[0],metadata:F[1]?new VG(F[1]):null,contentDispositionFilename:(W=(t=this._fullReader)==null?void 0:t.filename)!=null?W:null,contentLength:(Q=(c=this._fullReader)==null?void 0:c.contentLength)!=null?Q:null}});return V(this,MZ).set(l,Z),Z}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}startCleanup(l=!1){return D(this,null,function*(){if(!this.destroyed){yield this.messageHandler.sendWithPromise("Cleanup",null);for(const U of V(this,Td).values())if(!U.cleanup())throw new Error(`startCleanup: Page ${U.pageNumber} is currently rendering.`);this.commonObjs.clear(),l||this.fontLoader.clear(),V(this,MZ).clear(),this.filterFactory.destroy(!0),Pn.cleanup()}})}cachedPageNumber(l){var Z;if(!am(l))return null;const U=l.gen===0?`${l.num}R`:`${l.num}R${l.gen}`;return(Z=V(this,yc).get(U))!=null?Z:null}}MZ=new WeakMap,Td=new WeakMap,oc=new WeakMap,yc=new WeakMap,Sd=new WeakMap,et=new WeakSet,kc=function(d,l=null){const U=V(this,MZ).get(d);if(U)return U;const Z=this.messageHandler.sendWithPromise(d,l);return V(this,MZ).set(d,Z),Z};const da=Symbol("INITIAL_DATA");var qU,Za,UN;class J2{constructor(){i(this,Za),i(this,qU,Object.create(null))}get(l,U=null){if(U){const F=b(this,Za,UN).call(this,l);return F.promise.then(()=>U(F.data)),null}const Z=V(this,qU)[l];if(!Z||Z.data===da)throw new Error(`Requesting object that isn't resolved yet ${l}.`);return Z.data}has(l){const U=V(this,qU)[l];return!!U&&U.data!==da}resolve(l,U=null){const Z=b(this,Za,UN).call(this,l);Z.data=U,Z.resolve()}clear(){var l;for(const U in V(this,qU)){const{data:Z}=V(this,qU)[U];(l=Z==null?void 0:Z.bitmap)==null||l.close()}m(this,qU,Object.create(null))}*[Symbol.iterator](){for(const l in V(this,qU)){const{data:U}=V(this,qU)[l];U!==da&&(yield[l,U])}}}qU=new WeakMap,Za=new WeakSet,UN=function(d){var l;return(l=V(this,qU))[d]||(l[d]=jU(Nl({},Promise.withResolvers()),{data:da}))};var ZF;class HG{constructor(l){i(this,ZF,null),m(this,ZF,l),this.onContinue=null}get promise(){return V(this,ZF).capability.promise}cancel(l=0){V(this,ZF).cancel(null,l)}get separateAnnots(){const{separateAnnots:l}=V(this,ZF).operatorList;if(!l)return!1;const{annotationCanvasMap:U}=V(this,ZF);return l.form||l.canvas&&(U==null?void 0:U.size)>0}}ZF=new WeakMap;var FF,qt;const G2=class Lc{constructor({callback:l,params:U,objs:Z,commonObjs:F,annotationCanvasMap:t,operatorList:c,pageIndex:W,canvasFactory:Q,filterFactory:a,useRequestAnimationFrame:n=!1,pdfBug:s=!1,pageColors:R=null}){i(this,FF,null),this.callback=l,this.params=U,this.objs=Z,this.commonObjs=F,this.annotationCanvasMap=t,this.operatorListIdx=null,this.operatorList=c,this._pageIndex=W,this.canvasFactory=Q,this.filterFactory=a,this._pdfBug=s,this.pageColors=R,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=n===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new HG(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,F;if(this.cancelled)return;if(this._canvas){if(V(Lc,qt).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.");V(Lc,qt).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:t,viewport:c,transform:W,background:Q}=this.params;this.gfx=new AQ(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:U},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:W,viewport:c,transparency:l,background:Q}),this.operatorListIdx=0,this.graphicsReady=!0,(F=this.graphicsReadyCallback)==null||F.call(this)}cancel(l=null,U=0){var Z;this.running=!1,this.cancelled=!0,(Z=this.gfx)==null||Z.endDrawing(),V(this,FF)&&(window.cancelAnimationFrame(V(this,FF)),m(this,FF,null)),V(Lc,qt).delete(this._canvas),this.callback(l||new Vb(`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?m(this,FF,window.requestAnimationFrame(()=>{m(this,FF,null),this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}_next(){return D(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(),V(Lc,qt).delete(this._canvas),this.callback())))})}};FF=new WeakMap,qt=new WeakMap,i(G2,qt,new WeakSet);let PG=G2;const fG="4.4.168",AG="19fbc8998";dl(670);function nm(d){return Math.floor(Math.max(0,Math.min(1,d))*255).toString(16).padStart(2,"0")}function A0(d){return Math.max(0,Math.min(255,255*d))}class sm{static CMYK_G([l,U,Z,F]){return["G",1-Math.min(1,.3*l+.59*Z+.11*U+F)]}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=A0(l),[l,l,l]}static G_HTML([l]){const U=nm(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(A0)}static RGB_HTML(l){return`#${l.map(nm).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([l,U,Z,F]){return["RGB",1-Math.min(1,l+F),1-Math.min(1,Z+F),1-Math.min(1,U+F)]}static CMYK_rgb([l,U,Z,F]){return[A0(1-Math.min(1,l+F)),A0(1-Math.min(1,Z+F)),A0(1-Math.min(1,U+F))]}static CMYK_HTML(l){const U=this.CMYK_RGB(l).slice(1);return this.RGB_HTML(U)}static RGB_CMYK([l,U,Z]){const F=1-l,t=1-U,c=1-Z,W=Math.min(F,t,c);return["CMYK",F,t,c,W]}}let T2=class{static setupStorage(d,l,U,Z,F){const t=Z.getValue(l,{value:null});switch(U.name){case"textarea":if(t.value!==null&&(d.textContent=t.value),F==="print")break;d.addEventListener("input",c=>{Z.setValue(l,{value:c.target.value})});break;case"input":if(U.attributes.type==="radio"||U.attributes.type==="checkbox"){if(t.value===U.attributes.xfaOn?d.setAttribute("checked",!0):t.value===U.attributes.xfaOff&&d.removeAttribute("checked"),F==="print")break;d.addEventListener("change",c=>{Z.setValue(l,{value:c.target.checked?c.target.getAttribute("xfaOn"):c.target.getAttribute("xfaOff")})})}else{if(t.value!==null&&d.setAttribute("value",t.value),F==="print")break;d.addEventListener("input",c=>{Z.setValue(l,{value:c.target.value})})}break;case"select":if(t.value!==null){d.setAttribute("value",t.value);for(const c of U.children)c.attributes.value===t.value?c.attributes.selected=!0:c.attributes.hasOwnProperty("selected")&&delete c.attributes.selected}d.addEventListener("input",c=>{const W=c.target.options,Q=W.selectedIndex===-1?"":W[W.selectedIndex].value;Z.setValue(l,{value:Q})});break}}static setAttributes({html:d,element:l,storage:U=null,intent:Z,linkService:F}){const{attributes:t}=l,c=d instanceof HTMLAnchorElement;t.type==="radio"&&(t.name=`${t.name}-${Z}`);for(const[W,Q]of Object.entries(t))if(Q!=null)switch(W){case"class":Q.length&&d.setAttribute(W,Q.join(" "));break;case"dataId":break;case"id":d.setAttribute("data-element-id",Q);break;case"style":Object.assign(d.style,Q);break;case"textContent":d.textContent=Q;break;default:(!c||W!=="href"&&W!=="newWindow")&&d.setAttribute(W,Q)}c&&F.addLinkAttributes(d,t.href,t.newWindow),U&&t.dataId&&this.setupStorage(d,t.dataId,l,U)}static render(d){var l,U;const Z=d.annotationStorage,F=d.linkService,t=d.xfaHtml,c=d.intent||"display",W=document.createElement(t.name);t.attributes&&this.setAttributes({html:W,element:t,intent:c,linkService:F});const Q=c!=="richText",a=d.div;if(a.append(W),d.viewport){const R=`matrix(${d.viewport.transform.join(",")})`;a.style.transform=R}Q&&a.setAttribute("class","xfaLayer xfaFont");const n=[];if(t.children.length===0){if(t.value){const R=document.createTextNode(t.value);W.append(R),Q&&AW.shouldBuildText(t.name)&&n.push(R)}return{textDivs:n}}const s=[[t,-1,W]];for(;s.length>0;){const[R,N,h]=s.at(-1);if(N+1===R.children.length){s.pop();continue}const e=R.children[++s.at(-1)[1]];if(e===null)continue;const{name:M}=e;if(M==="#text"){const T=document.createTextNode(e.value);n.push(T),h.append(T);continue}const J=(l=e==null?void 0:e.attributes)!=null&&l.xmlns?document.createElementNS(e.attributes.xmlns,M):document.createElement(M);if(h.append(J),e.attributes&&this.setAttributes({html:J,element:e,storage:Z,intent:c,linkService:F}),((U=e.children)==null?void 0:U.length)>0)s.push([e,-1,J]);else if(e.value){const T=document.createTextNode(e.value);Q&&AW.shouldBuildText(M)&&n.push(T),J.append(T)}}for(const R of a.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))R.setAttribute("readOnly",!0);return{textDivs:n}}static update(d){const l=`matrix(${d.viewport.transform.join(",")})`;d.div.style.transform=l,d.div.hidden=!1}};const ZV=1e3,_G=9,EF=new WeakSet;function jd(d){return{width:d[2]-d[0],height:d[3]-d[1]}}class qG{static create(l){switch(l.data.annotationType){case Jl.LINK:return new p2(l);case Jl.TEXT:return new lT(l);case Jl.WIDGET:switch(l.data.fieldType){case"Tx":return new UT(l);case"Btn":return l.data.radioButton?new B2(l):l.data.checkBox?new ZT(l):new FT(l);case"Ch":return new tT(l);case"Sig":return new dT(l)}return new xF(l);case Jl.POPUP:return new tN(l);case Jl.FREETEXT:return new y2(l);case Jl.LINE:return new WT(l);case Jl.SQUARE:return new VT(l);case Jl.CIRCLE:return new QT(l);case Jl.POLYLINE:return new k2(l);case Jl.CARET:return new nT(l);case Jl.INK:return new L2(l);case Jl.POLYGON:return new aT(l);case Jl.HIGHLIGHT:return new sT(l);case Jl.UNDERLINE:return new iT(l);case Jl.SQUIGGLY:return new RT(l);case Jl.STRIKEOUT:return new NT(l);case Jl.STAMP:return new z2(l);case Jl.FILEATTACHMENT:return new hT(l);default:return new Sl(l)}}}var tF,zc,Dc,Fa,dN;const $G=class S2{constructor(l,{isRenderable:U=!1,ignoreBorder:Z=!1,createQuadrilaterals:F=!1}={}){i(this,Fa),i(this,tF,null),i(this,zc,!1),i(this,Dc,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)),F&&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 S2._hasPopupData(this.data)}updateEdited(l){var U;if(!this.container)return;V(this,tF)||m(this,tF,{rect:this.data.rect.slice(0)});const{rect:Z}=l;Z&&b(this,Fa,dN).call(this,Z),(U=V(this,Dc))==null||U.popup.updateEdited(l)}resetEdited(){var l;V(this,tF)&&(b(this,Fa,dN).call(this,V(this,tF).rect),(l=V(this,Dc))==null||l.popup.resetEdited(),m(this,tF,null))}_createContainer(l){const{data:U,parent:{page:Z,viewport:F}}=this,t=document.createElement("section");t.setAttribute("data-annotation-id",U.id),this instanceof xF||(t.tabIndex=ZV);const{style:c}=t;if(c.zIndex=this.parent.zIndex++,U.popupRef&&t.setAttribute("aria-haspopup","dialog"),U.alternativeText&&(t.title=U.alternativeText),U.noRotate&&t.classList.add("norotate"),!U.rect||this instanceof tN){const{rotation:e}=U;return!U.hasOwnCanvas&&e!==0&&this.setRotation(e,t),t}const{width:W,height:Q}=jd(U.rect);if(!l&&U.borderStyle.width>0){c.borderWidth=`${U.borderStyle.width}px`;const e=U.borderStyle.horizontalCornerRadius,M=U.borderStyle.verticalCornerRadius;if(e>0||M>0){const T=`calc(${e}px * var(--scale-factor)) / calc(${M}px * var(--scale-factor))`;c.borderRadius=T}else if(this instanceof B2){const T=`calc(${W}px * var(--scale-factor)) / calc(${Q}px * var(--scale-factor))`;c.borderRadius=T}switch(U.borderStyle.style){case u0.SOLID:c.borderStyle="solid";break;case u0.DASHED:c.borderStyle="dashed";break;case u0.BEVELED:A("Unimplemented border style: beveled");break;case u0.INSET:A("Unimplemented border style: inset");break;case u0.UNDERLINE:c.borderBottomStyle="solid";break}const J=U.borderColor||null;J?(m(this,zc,!0),c.borderColor=j.makeHexColor(J[0]|0,J[1]|0,J[2]|0)):c.borderWidth=0}const a=j.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:n,pageHeight:s,pageX:R,pageY:N}=F.rawDims;c.left=`${100*(a[0]-R)/n}%`,c.top=`${100*(a[1]-N)/s}%`;const{rotation:h}=U;return U.hasOwnCanvas||h===0?(c.width=`${100*W/n}%`,c.height=`${100*Q/s}%`):this.setRotation(h,t),t}setRotation(l,U=this.container){if(!this.data.rect)return;const{pageWidth:Z,pageHeight:F}=this.parent.viewport.rawDims,{width:t,height:c}=jd(this.data.rect);let W,Q;l%180===0?(W=100*t/Z,Q=100*c/F):(W=100*c/Z,Q=100*t/F),U.style.width=`${W}%`,U.style.height=`${Q}%`,U.setAttribute("data-main-rotation",(360-l)%360)}get _commonActions(){const l=(U,Z,F)=>{const t=F.detail[U],c=t[0],W=t.slice(1);F.target.style[Z]=sm[`${c}_HTML`](W),this.annotationStorage.setValue(this.data.id,{[Z]:sm[`${c}_rgb`](W)})};return Ul(this,"_commonActions",{display:U=>{const{display:Z}=U.detail,F=Z%2===1;this.container.style.visibility=F?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:F,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 F of Object.keys(U.detail)){const t=l[F]||Z[F];t==null||t(U)}}_setDefaultPropertiesFromJS(l){if(!this.enableScripting)return;const U=this.annotationStorage.getRawValue(this.data.id);if(!U)return;const Z=this._commonActions;for(const[F,t]of Object.entries(U)){const c=Z[F];if(c){const W={detail:{[F]:t},target:l};c(W),delete U[F]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:l}=this.data;if(!l)return;const[U,Z,F,t]=this.data.rect.map(e=>Math.fround(e));if(l.length===8){const[e,M,J,T]=l.subarray(2,6);if(F===e&&t===M&&U===J&&Z===T)return}const{style:c}=this.container;let W;if(V(this,zc)){const{borderColor:e,borderWidth:M}=c;c.borderWidth=0,W=["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="${e}" stroke-width="${M}">`],this.container.classList.add("hasBorder")}const Q=F-U,a=t-Z,{svgFactory:n}=this,s=n.createElement("svg");s.classList.add("quadrilateralsContainer"),s.setAttribute("width",0),s.setAttribute("height",0);const R=n.createElement("defs");s.append(R);const N=n.createElement("clipPath"),h=`clippath_${this.data.id}`;N.setAttribute("id",h),N.setAttribute("clipPathUnits","objectBoundingBox"),R.append(N);for(let e=2,M=l.length;e<M;e+=8){const J=l[e],T=l[e+1],G=l[e+2],Y=l[e+3],S=n.createElement("rect"),X=(G-U)/Q,B=(t-T)/a,k=(J-G)/Q,p=(T-Y)/a;S.setAttribute("x",X),S.setAttribute("y",B),S.setAttribute("width",k),S.setAttribute("height",p),N.append(S),W==null||W.push(`<rect vector-effect="non-scaling-stroke" x="${X}" y="${B}" width="${k}" height="${p}"/>`)}V(this,zc)&&(W.push("</g></svg>')"),c.backgroundImage=W.join("")),this.container.append(s),this.container.style.clipPath=`url(#${h})`}_createPopup(){const{container:l,data:U}=this;l.setAttribute("aria-haspopup","dialog");const Z=m(this,Dc,new tN({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(){tl("Abstract method `AnnotationElement.render` called")}_getElementsByName(l,U=null){const Z=[];if(this._fieldObjects){const F=this._fieldObjects[l];if(F)for(const{page:t,id:c,exportValues:W}of F){if(t===-1||c===U)continue;const Q=typeof W=="string"?W:null,a=document.querySelector(`[data-element-id="${c}"]`);if(a&&!EF.has(a)){A(`_getElementsByName - element not allowed: ${c}`);continue}Z.push({id:c,exportValue:Q,domElement:a})}return Z}for(const F of document.getElementsByName(l)){const{exportValue:t}=F,c=F.getAttribute("data-element-id");c!==U&&EF.has(F)&&Z.push({id:c,exportValue:t,domElement:F})}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})})}};tF=new WeakMap,zc=new WeakMap,Dc=new WeakMap,Fa=new WeakSet,dN=function(d){const{container:{style:l},data:{rect:U,rotation:Z},parent:{viewport:{rawDims:{pageWidth:F,pageHeight:t,pageX:c,pageY:W}}}}=this;U==null||U.splice(0,4,...d);const{width:Q,height:a}=jd(d);l.left=`${100*(d[0]-c)/F}%`,l.top=`${100*(t-d[3]+W)/t}%`,Z===0?(l.width=`${100*Q/F}%`,l.height=`${100*a/t}%`):this.setRotation(Z)};let Sl=$G;var JZ,uF,ZN,X2,FN,Y2;class p2 extends Sl{constructor(l,U=null){super(l,{isRenderable:!0,ignoreBorder:!!(U!=null&&U.ignoreBorder),createQuadrilaterals:!0}),i(this,JZ),i(this,ZN),i(this,FN),this.isTooltipOnly=l.data.isTooltipOnly}render(){const{data:l,linkService:U}=this,Z=document.createElement("a");Z.setAttribute("data-element-id",l.id);let F=!1;return l.url?(U.addLinkAttributes(Z,l.url,l.newWindow),F=!0):l.action?(this._bindNamedAction(Z,l.action),F=!0):l.attachment?(b(this,ZN,X2).call(this,Z,l.attachment,l.attachmentDest),F=!0):l.setOCGState?(b(this,FN,Y2).call(this,Z,l.setOCGState),F=!0):l.dest?(this._bindLink(Z,l.dest),F=!0):(l.actions&&(l.actions.Action||l.actions["Mouse Up"]||l.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(Z,l),F=!0),l.resetForm?(this._bindResetFormAction(Z,l.resetForm),F=!0):this.isTooltipOnly&&!F&&(this._bindLink(Z,""),F=!0)),this.container.classList.add("linkAnnotation"),F&&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==="")&&b(this,JZ,uF).call(this)}_bindNamedAction(l,U){l.href=this.linkService.getAnchorUrl(""),l.onclick=()=>(this.linkService.executeNamedAction(U),!1),b(this,JZ,uF).call(this)}_bindJSAction(l,U){l.href=this.linkService.getAnchorUrl("");const Z=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const F of Object.keys(U.actions)){const t=Z.get(F);t&&(l[t]=()=>{var c;return(c=this.linkService.eventBus)==null||c.dispatch("dispatcheventinsandbox",{source:this,detail:{id:U.id,name:F}}),!1})}l.onclick||(l.onclick=()=>!1),b(this,JZ,uF).call(this)}_bindResetFormAction(l,U){const Z=l.onclick;if(Z||(l.href=this.linkService.getAnchorUrl("")),b(this,JZ,uF).call(this),!this._fieldObjects){A('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),Z||(l.onclick=()=>!1);return}l.onclick=()=>{var F;Z==null||Z();const{fields:t,refs:c,include:W}=U,Q=[];if(t.length!==0||c.length!==0){const s=new Set(c);for(const R of t){const N=this._fieldObjects[R]||[];for(const{id:h}of N)s.add(h)}for(const R of Object.values(this._fieldObjects))for(const N of R)s.has(N.id)===W&&Q.push(N)}else for(const s of Object.values(this._fieldObjects))Q.push(...s);const a=this.annotationStorage,n=[];for(const s of Q){const{id:R}=s;switch(n.push(R),s.type){case"text":{const h=s.defaultValue||"";a.setValue(R,{value:h});break}case"checkbox":case"radiobutton":{const h=s.defaultValue===s.exportValues;a.setValue(R,{value:h});break}case"combobox":case"listbox":{const h=s.defaultValue||"";a.setValue(R,{value:h});break}default:continue}const N=document.querySelector(`[data-element-id="${R}"]`);if(N){if(!EF.has(N)){A(`_bindResetFormAction - element not allowed: ${R}`);continue}}else continue;N.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((F=this.linkService.eventBus)==null||F.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:n,name:"ResetForm"}})),!1}}}JZ=new WeakSet,uF=function(){this.container.setAttribute("data-internal-link","")},ZN=new WeakSet,X2=function(d,l,U=null){d.href=this.linkService.getAnchorUrl(""),l.description&&(d.title=l.description),d.onclick=()=>{var Z;return(Z=this.downloadManager)==null||Z.openOrDownloadData(l.content,l.filename,U),!1},b(this,JZ,uF).call(this)},FN=new WeakSet,Y2=function(d,l){d.href=this.linkService.getAnchorUrl(""),d.onclick=()=>(this.linkService.executeSetOCGState(l),!1),b(this,JZ,uF).call(this)};class lT extends Sl{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 xF extends Sl{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 sU.platform.isMac?l.metaKey:l.ctrlKey}_setEventListener(l,U,Z,F,t){Z.includes("mouse")?l.addEventListener(Z,c=>{var W;(W=this.linkService.eventBus)==null||W.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:F,value:t(c),shift:c.shiftKey,modifier:this._getKeyModifier(c)}})}):l.addEventListener(Z,c=>{var W;if(Z==="blur"){if(!U.focused||!c.relatedTarget)return;U.focused=!1}else if(Z==="focus"){if(U.focused)return;U.focused=!0}t&&((W=this.linkService.eventBus)==null||W.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:F,value:t(c)}}))})}_setEventListeners(l,U,Z,F){var t,c,W;for(const[Q,a]of Z)(a==="Action"||(t=this.data.actions)!=null&&t[a])&&((a==="Focus"||a==="Blur")&&(U||(U={focused:!1})),this._setEventListener(l,U,Q,a,F),a==="Focus"&&!((c=this.data.actions)!=null&&c.Blur)?this._setEventListener(l,U,"blur","Blur",null):a==="Blur"&&!((W=this.data.actions)!=null&&W.Focus)&&this._setEventListener(l,U,"focus","Focus",null))}_setBackgroundColor(l){const U=this.data.backgroundColor||null;l.style.backgroundColor=U===null?"transparent":j.makeHexColor(U[0],U[1],U[2])}_setTextStyle(l){const U=["left","center","right"],{fontColor:Z}=this.data.defaultAppearanceData,F=this.data.defaultAppearanceData.fontSize||_G,t=l.style;let c;const W=2,Q=a=>Math.round(10*a)/10;if(this.data.multiLine){const a=Math.abs(this.data.rect[3]-this.data.rect[1]-W),n=Math.round(a/(Os*F))||1,s=a/n;c=Math.min(F,Q(s/Os))}else{const a=Math.abs(this.data.rect[3]-this.data.rect[1]-W);c=Math.min(F,Q(a/Os))}t.fontSize=`calc(${c}px * var(--scale-factor))`,t.color=j.makeHexColor(Z[0],Z[1],Z[2]),this.data.textAlignment!==null&&(t.textAlign=U[this.data.textAlignment])}_setRequired(l,U){U?l.setAttribute("required",!0):l.removeAttribute("required"),l.setAttribute("aria-required",U)}}class UT extends xF{constructor(l){const U=l.renderForms||l.data.hasOwnCanvas||!l.data.hasAppearance&&!!l.data.fieldValue;super(l,{isRenderable:U})}setPropertyOnSiblings(l,U,Z,F){const t=this.annotationStorage;for(const c of this._getElementsByName(l.name,l.id))c.domElement&&(c.domElement[U]=Z),t.setValue(c.id,{[F]:Z})}render(){var l,U;const Z=this.annotationStorage,F=this.data.id;this.container.classList.add("textWidgetAnnotation");let t=null;if(this.renderForms){const c=Z.getValue(F,{value:this.data.fieldValue});let W=c.value||"";const Q=Z.getValue(F,{charLimit:this.data.maxLen}).charLimit;Q&&W.length>Q&&(W=W.slice(0,Q));let a=c.formattedValue||((l=this.data.textContent)==null?void 0:l.join(`
|
||
`))||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const n={userValue:W,formattedValue:a,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(t=document.createElement("textarea"),t.textContent=a!=null?a:W,this.data.doNotScroll&&(t.style.overflowY="hidden")):(t=document.createElement("input"),t.type="text",t.setAttribute("value",a!=null?a:W),this.data.doNotScroll&&(t.style.overflowX="hidden")),this.data.hasOwnCanvas&&(t.hidden=!0),EF.add(t),t.setAttribute("data-element-id",F),t.disabled=this.data.readOnly,t.name=this.data.fieldName,t.tabIndex=ZV,this._setRequired(t,this.data.required),Q&&(t.maxLength=Q),t.addEventListener("input",R=>{Z.setValue(F,{value:R.target.value}),this.setPropertyOnSiblings(t,"value",R.target.value,"value"),n.formattedValue=null}),t.addEventListener("resetform",R=>{var h;const N=(h=this.data.defaultFieldValue)!=null?h:"";t.value=n.userValue=N,n.formattedValue=null});let s=R=>{const{formattedValue:N}=n;N!=null&&(R.target.value=N),R.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){t.addEventListener("focus",N=>{var h;if(n.focused)return;const{target:e}=N;n.userValue&&(e.value=n.userValue),n.lastCommittedValue=e.value,n.commitKey=1,(h=this.data.actions)!=null&&h.Focus||(n.focused=!0)}),t.addEventListener("updatefromsandbox",N=>{this.showElementAndHideCanvas(N.target);const h={value(e){var M;n.userValue=(M=e.detail.value)!=null?M:"",Z.setValue(F,{value:n.userValue.toString()}),e.target.value=n.userValue},formattedValue(e){const{formattedValue:M}=e.detail;n.formattedValue=M,M!=null&&e.target!==document.activeElement&&(e.target.value=M),Z.setValue(F,{formattedValue:M})},selRange(e){e.target.setSelectionRange(...e.detail.selRange)},charLimit:e=>{var M;const{charLimit:J}=e.detail,{target:T}=e;if(J===0){T.removeAttribute("maxLength");return}T.setAttribute("maxLength",J);let G=n.userValue;!G||G.length<=J||(G=G.slice(0,J),T.value=n.userValue=G,Z.setValue(F,{value:G}),(M=this.linkService.eventBus)==null||M.dispatch("dispatcheventinsandbox",{source:this,detail:{id:F,name:"Keystroke",value:G,willCommit:!0,commitKey:1,selStart:T.selectionStart,selEnd:T.selectionEnd}}))}};this._dispatchEventFromSandbox(h,N)}),t.addEventListener("keydown",N=>{var h;n.commitKey=1;let e=-1;if(N.key==="Escape"?e=0:N.key==="Enter"&&!this.data.multiLine?e=2:N.key==="Tab"&&(n.commitKey=3),e===-1)return;const{value:M}=N.target;n.lastCommittedValue!==M&&(n.lastCommittedValue=M,n.userValue=M,(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:F,name:"Keystroke",value:M,willCommit:!0,commitKey:e,selStart:N.target.selectionStart,selEnd:N.target.selectionEnd}}))});const R=s;s=null,t.addEventListener("blur",N=>{var h,e;if(!n.focused||!N.relatedTarget)return;(h=this.data.actions)!=null&&h.Blur||(n.focused=!1);const{value:M}=N.target;n.userValue=M,n.lastCommittedValue!==M&&((e=this.linkService.eventBus)==null||e.dispatch("dispatcheventinsandbox",{source:this,detail:{id:F,name:"Keystroke",value:M,willCommit:!0,commitKey:n.commitKey,selStart:N.target.selectionStart,selEnd:N.target.selectionEnd}})),R(N)}),(U=this.data.actions)!=null&&U.Keystroke&&t.addEventListener("beforeinput",N=>{var h;n.lastCommittedValue=null;const{data:e,target:M}=N,{value:J,selectionStart:T,selectionEnd:G}=M;let Y=T,S=G;switch(N.inputType){case"deleteWordBackward":{const X=J.substring(0,T).match(/\w*[^\w]*$/);X&&(Y-=X[0].length);break}case"deleteWordForward":{const X=J.substring(T).match(/^[^\w]*\w*/);X&&(S+=X[0].length);break}case"deleteContentBackward":T===G&&(Y-=1);break;case"deleteContentForward":T===G&&(S+=1);break}N.preventDefault(),(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:F,name:"Keystroke",value:J,change:e||"",willCommit:!1,selStart:Y,selEnd:S}})}),this._setEventListeners(t,n,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],N=>N.target.value)}if(s&&t.addEventListener("blur",s),this.data.comb){const R=(this.data.rect[2]-this.data.rect[0])/Q;t.classList.add("comb"),t.style.letterSpacing=`calc(${R}px * var(--scale-factor) - 1ch)`}}else t=document.createElement("div"),t.textContent=this.data.fieldValue,t.style.verticalAlign="middle",t.style.display="table-cell",this.data.hasOwnCanvas&&(t.hidden=!0);return this._setTextStyle(t),this._setBackgroundColor(t),this._setDefaultPropertiesFromJS(t),this.container.append(t),this.container}}class dT extends xF{constructor(l){super(l,{isRenderable:!!l.data.hasOwnCanvas})}}class ZT extends xF{constructor(l){super(l,{isRenderable:l.renderForms})}render(){const l=this.annotationStorage,U=this.data,Z=U.id;let F=l.getValue(Z,{value:U.exportValue===U.fieldValue}).value;typeof F=="string"&&(F=F!=="Off",l.setValue(Z,{value:F})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const t=document.createElement("input");return EF.add(t),t.setAttribute("data-element-id",Z),t.disabled=U.readOnly,this._setRequired(t,this.data.required),t.type="checkbox",t.name=U.fieldName,F&&t.setAttribute("checked",!0),t.setAttribute("exportValue",U.exportValue),t.tabIndex=ZV,t.addEventListener("change",c=>{const{name:W,checked:Q}=c.target;for(const a of this._getElementsByName(W,Z)){const n=Q&&a.exportValue===U.exportValue;a.domElement&&(a.domElement.checked=n),l.setValue(a.id,{value:n})}l.setValue(Z,{value:Q})}),t.addEventListener("resetform",c=>{const W=U.defaultFieldValue||"Off";c.target.checked=W===U.exportValue}),this.enableScripting&&this.hasJSActions&&(t.addEventListener("updatefromsandbox",c=>{const W={value(Q){Q.target.checked=Q.detail.value!=="Off",l.setValue(Z,{value:Q.target.checked})}};this._dispatchEventFromSandbox(W,c)}),this._setEventListeners(t,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],c=>c.target.checked)),this._setBackgroundColor(t),this._setDefaultPropertiesFromJS(t),this.container.append(t),this.container}}class B2 extends xF{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 F=l.getValue(Z,{value:U.fieldValue===U.buttonValue}).value;if(typeof F=="string"&&(F=F!==U.buttonValue,l.setValue(Z,{value:F})),F)for(const c of this._getElementsByName(U.fieldName,Z))l.setValue(c.id,{value:!1});const t=document.createElement("input");if(EF.add(t),t.setAttribute("data-element-id",Z),t.disabled=U.readOnly,this._setRequired(t,this.data.required),t.type="radio",t.name=U.fieldName,F&&t.setAttribute("checked",!0),t.tabIndex=ZV,t.addEventListener("change",c=>{const{name:W,checked:Q}=c.target;for(const a of this._getElementsByName(W,Z))l.setValue(a.id,{value:!1});l.setValue(Z,{value:Q})}),t.addEventListener("resetform",c=>{const W=U.defaultFieldValue;c.target.checked=W!=null&&W===U.buttonValue}),this.enableScripting&&this.hasJSActions){const c=U.buttonValue;t.addEventListener("updatefromsandbox",W=>{const Q={value:a=>{const n=c===a.detail.value;for(const s of this._getElementsByName(a.target.name)){const R=n&&s.id===Z;s.domElement&&(s.domElement.checked=R),l.setValue(s.id,{value:R})}}};this._dispatchEventFromSandbox(Q,W)}),this._setEventListeners(t,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],W=>W.target.checked)}return this._setBackgroundColor(t),this._setDefaultPropertiesFromJS(t),this.container.append(t),this.container}}class FT extends p2{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 tT extends xF{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}),F=document.createElement("select");EF.add(F),F.setAttribute("data-element-id",U),F.disabled=this.data.readOnly,this._setRequired(F,this.data.required),F.name=this.data.fieldName,F.tabIndex=ZV;let t=this.data.combo&&this.data.options.length>0;this.data.combo||(F.size=this.data.options.length,this.data.multiSelect&&(F.multiple=!0)),F.addEventListener("resetform",n=>{const s=this.data.defaultFieldValue;for(const R of F.options)R.selected=R.value===s});for(const n of this.data.options){const s=document.createElement("option");s.textContent=n.displayValue,s.value=n.exportValue,Z.value.includes(n.exportValue)&&(s.setAttribute("selected",!0),t=!1),F.append(s)}let c=null;if(t){const n=document.createElement("option");n.value=" ",n.setAttribute("hidden",!0),n.setAttribute("selected",!0),F.prepend(n),c=()=>{n.remove(),F.removeEventListener("input",c),c=null},F.addEventListener("input",c)}const W=n=>{const s=n?"value":"textContent",{options:R,multiple:N}=F;return N?Array.prototype.filter.call(R,h=>h.selected).map(h=>h[s]):R.selectedIndex===-1?null:R[R.selectedIndex][s]};let Q=W(!1);const a=n=>{const s=n.target.options;return Array.prototype.map.call(s,R=>({displayValue:R.textContent,exportValue:R.value}))};return this.enableScripting&&this.hasJSActions?(F.addEventListener("updatefromsandbox",n=>{const s={value(R){c==null||c();const N=R.detail.value,h=new Set(Array.isArray(N)?N:[N]);for(const e of F.options)e.selected=h.has(e.value);l.setValue(U,{value:W(!0)}),Q=W(!1)},multipleSelection(R){F.multiple=!0},remove(R){const N=F.options,h=R.detail.remove;N[h].selected=!1,F.remove(h),N.length>0&&Array.prototype.findIndex.call(N,e=>e.selected)===-1&&(N[0].selected=!0),l.setValue(U,{value:W(!0),items:a(R)}),Q=W(!1)},clear(R){for(;F.length!==0;)F.remove(0);l.setValue(U,{value:null,items:[]}),Q=W(!1)},insert(R){const{index:N,displayValue:h,exportValue:e}=R.detail.insert,M=F.children[N],J=document.createElement("option");J.textContent=h,J.value=e,M?M.before(J):F.append(J),l.setValue(U,{value:W(!0),items:a(R)}),Q=W(!1)},items(R){const{items:N}=R.detail;for(;F.length!==0;)F.remove(0);for(const h of N){const{displayValue:e,exportValue:M}=h,J=document.createElement("option");J.textContent=e,J.value=M,F.append(J)}F.options.length>0&&(F.options[0].selected=!0),l.setValue(U,{value:W(!0),items:a(R)}),Q=W(!1)},indices(R){const N=new Set(R.detail.indices);for(const h of R.target.options)h.selected=N.has(h.index);l.setValue(U,{value:W(!0)}),Q=W(!1)},editable(R){R.target.disabled=!R.detail.editable}};this._dispatchEventFromSandbox(s,n)}),F.addEventListener("input",n=>{var s;const R=W(!0),N=W(!1);l.setValue(U,{value:R}),n.preventDefault(),(s=this.linkService.eventBus)==null||s.dispatch("dispatcheventinsandbox",{source:this,detail:{id:U,name:"Keystroke",value:Q,change:N,changeEx:R,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(F,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],n=>n.target.value)):F.addEventListener("input",function(n){l.setValue(U,{value:W(!0)})}),this.data.combo&&this._setTextStyle(F),this._setBackgroundColor(F),this._setDefaultPropertiesFromJS(F),this.container.append(F),this.container}}class tN extends Sl{constructor(l){const{data:U,elements:Z}=l;super(l,{isRenderable:Sl._hasPopupData(U)}),this.elements=Z,this.popup=null}render(){this.container.classList.add("popupAnnotation");const l=this.popup=new cT({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=>`${Le}${Z}`).join(",")),this.container}}var eW,cN,WN,MW,Mt,hl,nZ,Jt,An,_n,JW,ZZ,$U,GZ,qn,TZ,ta,cF,Gt,GW,ca,Wa,Mi,VN,im,QN,u2,aN,o2,nN,Rm,TW,$n,SW,ls,Us,sN;class cT{constructor({container:l,color:U,elements:Z,titleObj:F,modificationDate:t,contentsObj:c,richText:W,parent:Q,rect:a,parentRect:n,open:s}){i(this,GW),i(this,Wa),i(this,VN),i(this,QN),i(this,aN),i(this,nN),i(this,TW),i(this,SW),i(this,Us),i(this,eW,b(this,aN,o2).bind(this)),i(this,cN,b(this,Us,sN).bind(this)),i(this,WN,b(this,SW,ls).bind(this)),i(this,MW,b(this,TW,$n).bind(this)),i(this,Mt,null),i(this,hl,null),i(this,nZ,null),i(this,Jt,null),i(this,An,null),i(this,_n,null),i(this,JW,null),i(this,ZZ,!1),i(this,$U,null),i(this,GZ,null),i(this,qn,null),i(this,TZ,null),i(this,ta,null),i(this,cF,null),i(this,Gt,!1);var R;m(this,hl,l),m(this,ta,F),m(this,nZ,c),m(this,TZ,W),m(this,_n,Q),m(this,Mt,U),m(this,qn,a),m(this,JW,n),m(this,An,Z),m(this,Jt,xe.toDateObject(t)),this.trigger=Z.flatMap(N=>N.getElementsToTriggerPopup());for(const N of this.trigger)N.addEventListener("click",V(this,MW)),N.addEventListener("mouseenter",V(this,WN)),N.addEventListener("mouseleave",V(this,cN)),N.classList.add("popupTriggerArea");for(const N of Z)(R=N.container)==null||R.addEventListener("keydown",V(this,eW));V(this,hl).hidden=!0,s&&b(this,TW,$n).call(this)}render(){if(V(this,$U))return;const l=m(this,$U,document.createElement("div"));if(l.className="popup",V(this,Mt)){const t=l.style.outlineColor=j.makeHexColor(...V(this,Mt));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?l.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`:l.style.backgroundColor=j.makeHexColor(...V(this,Mt).map(c=>Math.floor(.7*(255-c)+c)))}const U=document.createElement("span");U.className="header";const Z=document.createElement("h1");if(U.append(Z),{dir:Z.dir,str:Z.textContent}=V(this,ta),l.append(U),V(this,Jt)){const t=document.createElement("span");t.classList.add("popupDate"),t.setAttribute("data-l10n-id","pdfjs-annotation-date-string"),t.setAttribute("data-l10n-args",JSON.stringify({date:V(this,Jt).toLocaleDateString(),time:V(this,Jt).toLocaleTimeString()})),U.append(t)}const F=V(this,GW,ca);if(F)T2.render({xfaHtml:F,intent:"richText",div:l}),l.lastChild.classList.add("richText","popupContent");else{const t=this._formatContents(V(this,nZ));l.append(t)}V(this,hl).append(l)}_formatContents({str:l,dir:U}){const Z=document.createElement("p");Z.classList.add("popupContent"),Z.dir=U;const F=l.split(/(?:\r\n?|\n)/);for(let t=0,c=F.length;t<c;++t){const W=F[t];Z.append(document.createTextNode(W)),t<c-1&&Z.append(document.createElement("br"))}return Z}updateEdited({rect:l,popupContent:U}){var Z;V(this,cF)||m(this,cF,{contentsObj:V(this,nZ),richText:V(this,TZ)}),l&&m(this,GZ,null),U&&(m(this,TZ,b(this,QN,u2).call(this,U)),m(this,nZ,null)),(Z=V(this,$U))==null||Z.remove(),m(this,$U,null)}resetEdited(){var l;V(this,cF)&&({contentsObj:bU(this,nZ)._,richText:bU(this,TZ)._}=V(this,cF),m(this,cF,null),(l=V(this,$U))==null||l.remove(),m(this,$U,null),m(this,GZ,null))}forceHide(){m(this,Gt,this.isVisible),V(this,Gt)&&(V(this,hl).hidden=!0)}maybeShow(){V(this,Gt)&&(V(this,$U)||b(this,SW,ls).call(this),m(this,Gt,!1),V(this,hl).hidden=!1)}get isVisible(){return V(this,hl).hidden===!1}}eW=new WeakMap,cN=new WeakMap,WN=new WeakMap,MW=new WeakMap,Mt=new WeakMap,hl=new WeakMap,nZ=new WeakMap,Jt=new WeakMap,An=new WeakMap,_n=new WeakMap,JW=new WeakMap,ZZ=new WeakMap,$U=new WeakMap,GZ=new WeakMap,qn=new WeakMap,TZ=new WeakMap,ta=new WeakMap,cF=new WeakMap,Gt=new WeakMap,GW=new WeakSet,ca=function(){const d=V(this,TZ),l=V(this,nZ);return d!=null&&d.str&&(!(l!=null&&l.str)||l.str===d.str)&&V(this,TZ).html||null},Wa=new WeakSet,Mi=function(){var d,l,U;return((U=(l=(d=V(this,GW,ca))==null?void 0:d.attributes)==null?void 0:l.style)==null?void 0:U.fontSize)||0},VN=new WeakSet,im=function(){var d,l,U;return((U=(l=(d=V(this,GW,ca))==null?void 0:d.attributes)==null?void 0:l.style)==null?void 0:U.color)||null},QN=new WeakSet,u2=function(d){const l=[],U={str:d,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:l}]}},Z={style:{color:V(this,VN,im),fontSize:V(this,Wa,Mi)?`calc(${V(this,Wa,Mi)}px * var(--scale-factor))`:""}};for(const F of d.split(`
|
||
`))l.push({name:"span",value:F,attributes:Z});return U},aN=new WeakSet,o2=function(d){d.altKey||d.shiftKey||d.ctrlKey||d.metaKey||(d.key==="Enter"||d.key==="Escape"&&V(this,ZZ))&&b(this,TW,$n).call(this)},nN=new WeakSet,Rm=function(){if(V(this,GZ)!==null)return;const{page:{view:d},viewport:{rawDims:{pageWidth:l,pageHeight:U,pageX:Z,pageY:F}}}=V(this,_n);let t=!!V(this,JW),c=t?V(this,JW):V(this,qn);for(const N of V(this,An))if(!c||j.intersect(N.data.rect,c)!==null){c=N.data.rect,t=!0;break}const W=j.normalizeRect([c[0],d[3]-c[1]+d[1],c[2],d[3]-c[3]+d[1]]),Q=5,a=t?c[2]-c[0]+Q:0,n=W[0]+a,s=W[1];m(this,GZ,[100*(n-Z)/l,100*(s-F)/U]);const{style:R}=V(this,hl);R.left=`${V(this,GZ)[0]}%`,R.top=`${V(this,GZ)[1]}%`},TW=new WeakSet,$n=function(){m(this,ZZ,!V(this,ZZ)),V(this,ZZ)?(b(this,SW,ls).call(this),V(this,hl).addEventListener("click",V(this,MW)),V(this,hl).addEventListener("keydown",V(this,eW))):(b(this,Us,sN).call(this),V(this,hl).removeEventListener("click",V(this,MW)),V(this,hl).removeEventListener("keydown",V(this,eW)))},SW=new WeakSet,ls=function(){V(this,$U)||this.render(),this.isVisible?V(this,ZZ)&&V(this,hl).classList.add("focused"):(b(this,nN,Rm).call(this),V(this,hl).hidden=!1,V(this,hl).style.zIndex=parseInt(V(this,hl).style.zIndex)+1e3)},Us=new WeakSet,sN=function(){V(this,hl).classList.remove("focused"),!(V(this,ZZ)||!this.isVisible)&&(V(this,hl).hidden=!0,V(this,hl).style.zIndex=parseInt(V(this,hl).style.zIndex)-1e3)};class y2 extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.textContent=l.data.textContent,this.textPosition=l.data.textPosition,this.annotationEditorType=ll.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}}var Va;class WT extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),i(this,Va,null)}render(){this.container.classList.add("lineAnnotation");const l=this.data,{width:U,height:Z}=jd(l.rect),F=this.svgFactory.create(U,Z,!0),t=m(this,Va,this.svgFactory.createElement("svg:line"));return t.setAttribute("x1",l.rect[2]-l.lineCoordinates[0]),t.setAttribute("y1",l.rect[3]-l.lineCoordinates[1]),t.setAttribute("x2",l.rect[2]-l.lineCoordinates[2]),t.setAttribute("y2",l.rect[3]-l.lineCoordinates[3]),t.setAttribute("stroke-width",l.borderStyle.width||1),t.setAttribute("stroke","transparent"),t.setAttribute("fill","transparent"),F.append(t),this.container.append(F),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return V(this,Va)}addHighlightArea(){this.container.classList.add("highlightArea")}}Va=new WeakMap;var Qa;class VT extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),i(this,Qa,null)}render(){this.container.classList.add("squareAnnotation");const l=this.data,{width:U,height:Z}=jd(l.rect),F=this.svgFactory.create(U,Z,!0),t=l.borderStyle.width,c=m(this,Qa,this.svgFactory.createElement("svg:rect"));return c.setAttribute("x",t/2),c.setAttribute("y",t/2),c.setAttribute("width",U-t),c.setAttribute("height",Z-t),c.setAttribute("stroke-width",t||1),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),F.append(c),this.container.append(F),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return V(this,Qa)}addHighlightArea(){this.container.classList.add("highlightArea")}}Qa=new WeakMap;var aa;class QT extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),i(this,aa,null)}render(){this.container.classList.add("circleAnnotation");const l=this.data,{width:U,height:Z}=jd(l.rect),F=this.svgFactory.create(U,Z,!0),t=l.borderStyle.width,c=m(this,aa,this.svgFactory.createElement("svg:ellipse"));return c.setAttribute("cx",U/2),c.setAttribute("cy",Z/2),c.setAttribute("rx",U/2-t/2),c.setAttribute("ry",Z/2-t/2),c.setAttribute("stroke-width",t||1),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),F.append(c),this.container.append(F),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return V(this,aa)}addHighlightArea(){this.container.classList.add("highlightArea")}}aa=new WeakMap;var na;class k2 extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),i(this,na,null),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:l,vertices:U,borderStyle:Z,popupRef:F}}=this;if(!U)return this.container;const{width:t,height:c}=jd(l),W=this.svgFactory.create(t,c,!0);let Q=[];for(let n=0,s=U.length;n<s;n+=2){const R=U[n]-l[0],N=l[3]-U[n+1];Q.push(`${R},${N}`)}Q=Q.join(" ");const a=m(this,na,this.svgFactory.createElement(this.svgElementName));return a.setAttribute("points",Q),a.setAttribute("stroke-width",Z.width||1),a.setAttribute("stroke","transparent"),a.setAttribute("fill","transparent"),W.append(a),this.container.append(W),!F&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return V(this,na)}addHighlightArea(){this.container.classList.add("highlightArea")}}na=new WeakMap;class aT extends k2{constructor(l){super(l),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class nT extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}var sa;class L2 extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),i(this,sa,[]),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=ll.INK}render(){this.container.classList.add(this.containerClassName);const{data:{rect:l,inkLists:U,borderStyle:Z,popupRef:F}}=this,{width:t,height:c}=jd(l),W=this.svgFactory.create(t,c,!0);for(const Q of U){let a=[];for(let s=0,R=Q.length;s<R;s+=2){const N=Q[s]-l[0],h=l[3]-Q[s+1];a.push(`${N},${h}`)}a=a.join(" ");const n=this.svgFactory.createElement(this.svgElementName);V(this,sa).push(n),n.setAttribute("points",a),n.setAttribute("stroke-width",Z.width||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),!F&&this.hasPopupData&&this._createPopup(),W.append(n)}return this.container.append(W),this.container}getElementsToTriggerPopup(){return V(this,sa)}addHighlightArea(){this.container.classList.add("highlightArea")}}sa=new WeakMap;class sT extends Sl{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 iT extends Sl{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 RT extends Sl{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 NT extends Sl{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 z2 extends Sl{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("stampAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}var ia,Ra,iN;class hT extends Sl{constructor(l){var U;super(l,{isRenderable:!0}),i(this,Ra),i(this,ia,null);const{file:Z}=this.data;this.filename=Z.filename,this.content=Z.content,(U=this.linkService.eventBus)==null||U.dispatch("fileattachmentannotation",Nl({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",b(this,Ra,iN).bind(this)),m(this,ia,Z);const{isMac:F}=sU.platform;return l.addEventListener("keydown",t=>{t.key==="Enter"&&(F?t.metaKey:t.ctrlKey)&&b(this,Ra,iN).call(this)}),!U.popupRef&&this.hasPopupData?this._createPopup():Z.classList.add("popupTriggerArea"),l.append(Z),l}getElementsToTriggerPopup(){return V(this,ia)}addHighlightArea(){this.container.classList.add("highlightArea")}}ia=new WeakMap,Ra=new WeakSet,iN=function(){var d;(d=this.downloadManager)==null||d.openOrDownloadData(this.content,this.filename)};var $V,Ut,_0,Ji,Nm,lQ,Gi,hm;let bT=(hm=class{constructor({div:d,accessibilityManager:l,annotationCanvasMap:U,annotationEditorUIManager:Z,page:F,viewport:t}){i(this,Ji),i(this,lQ),i(this,$V,null),i(this,Ut,null),i(this,_0,new Map),this.div=d,m(this,$V,l),m(this,Ut,U),this.page=F,this.viewport=t,this.zIndex=0,this._annotationEditorUIManager=Z}render(d){return D(this,null,function*(){var l;const{annotations:U}=d,Z=this.div;IF(Z,this.viewport);const F=new Map,t={data:null,layer:Z,linkService:d.linkService,downloadManager:d.downloadManager,imageResourcesPath:d.imageResourcesPath||"",renderForms:d.renderForms!==!1,svgFactory:new Wb,annotationStorage:d.annotationStorage||new sb,enableScripting:d.enableScripting===!0,hasJSActions:d.hasJSActions,fieldObjects:d.fieldObjects,parent:this,elements:null};for(const c of U){if(c.noHTML)continue;const W=c.annotationType===Jl.POPUP;if(W){const n=F.get(c.id);if(!n)continue;t.elements=n}else{const{width:n,height:s}=jd(c.rect);if(n<=0||s<=0)continue}t.data=c;const Q=qG.create(t);if(!Q.isRenderable)continue;if(!W&&c.popupRef){const n=F.get(c.popupRef);n?n.push(Q):F.set(c.popupRef,[Q])}const a=Q.render();c.hidden&&(a.style.visibility="hidden"),b(this,Ji,Nm).call(this,a,c.id),Q.annotationEditorType>0&&(V(this,_0).set(Q.data.id,Q),(l=this._annotationEditorUIManager)==null||l.renderAnnotationElement(Q))}b(this,lQ,Gi).call(this)})}update({viewport:d}){const l=this.div;this.viewport=d,IF(l,{rotation:d.rotation}),b(this,lQ,Gi).call(this),l.hidden=!1}getEditableAnnotations(){return Array.from(V(this,_0).values())}getEditableAnnotation(d){return V(this,_0).get(d)}},$V=new WeakMap,Ut=new WeakMap,_0=new WeakMap,Ji=new WeakSet,Nm=function(d,l){var U;const Z=d.firstChild||d;Z.id=`${Le}${l}`,this.div.append(d),(U=V(this,$V))==null||U.moveElementInDOM(this.div,d,Z,!1)},lQ=new WeakSet,Gi=function(){if(!V(this,Ut))return;const d=this.div;for(const[l,U]of V(this,Ut)){const Z=d.querySelector(`[data-annotation-id="${l}"]`);if(!Z)continue;U.className="annotationContent";const{firstChild:F}=Z;F?F.nodeName==="CANVAS"?F.replaceWith(U):F.classList.contains("annotationContent")?F.after(U):F.before(U):Z.append(U)}V(this,Ut).clear()},hm);const Na=/\r\n?|\n/g;var ha,ba,ma,ea,Ma,dd,pU,Ja,BU,XW,RN,D2,NN,I2,hN,E2,YW,ds,pW,Zs,Ic,Ga,bN,w2,Fs,mN,eN,C2;const AU=class El extends Vl{constructor(l){super(jU(Nl({},l),{name:"freeTextEditor"})),i(this,RN),i(this,NN),i(this,hN),i(this,YW),i(this,Ic),i(this,bN),i(this,eN),i(this,ha,this.editorDivBlur.bind(this)),i(this,ba,this.editorDivFocus.bind(this)),i(this,ma,this.editorDivInput.bind(this)),i(this,ea,this.editorDivKeydown.bind(this)),i(this,Ma,this.editorDivPaste.bind(this)),i(this,dd,void 0),i(this,pU,""),i(this,Ja,`${this.id}-editor`),i(this,BU,void 0),i(this,XW,null),m(this,dd,l.color||El._defaultColor||Vl._defaultLineColor),m(this,BU,l.fontSize||El._defaultFontSize)}static get _keyboardManager(){const l=El.prototype,U=t=>t.isEmpty(),Z=fW.TRANSLATE_SMALL,F=fW.TRANSLATE_BIG;return Ul(this,"_keyboardManager",new UV([[["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:[-F,0],checker:U}],[["ArrowRight","mac+ArrowRight"],l._translateEmpty,{args:[Z,0],checker:U}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l._translateEmpty,{args:[F,0],checker:U}],[["ArrowUp","mac+ArrowUp"],l._translateEmpty,{args:[0,-Z],checker:U}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l._translateEmpty,{args:[0,-F],checker:U}],[["ArrowDown","mac+ArrowDown"],l._translateEmpty,{args:[0,Z],checker:U}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l._translateEmpty,{args:[0,F],checker:U}]]))}static initialize(l,U){Vl.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 P.FREETEXT_SIZE:El._defaultFontSize=U;break;case P.FREETEXT_COLOR:El._defaultColor=U;break}}updateParams(l,U){switch(l){case P.FREETEXT_SIZE:b(this,RN,D2).call(this,U);break;case P.FREETEXT_COLOR:b(this,NN,I2).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[P.FREETEXT_SIZE,El._defaultFontSize],[P.FREETEXT_COLOR,El._defaultColor||Vl._defaultLineColor]]}get propertiesToUpdate(){return[[P.FREETEXT_SIZE,V(this,BU)],[P.FREETEXT_COLOR,V(this,dd)]]}_translateEmpty(l,U){this._uiManager.translateSelectedEditors(l,U,!0)}getInitialTranslation(){const l=this.parentScale;return[-El._internalPadding*l,-(El._internalPadding+V(this,BU))*l]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(ll.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant");const l=this._uiManager._signal;this.editorDiv.addEventListener("keydown",V(this,ea),{signal:l}),this.editorDiv.addEventListener("focus",V(this,ba),{signal:l}),this.editorDiv.addEventListener("blur",V(this,ha),{signal:l}),this.editorDiv.addEventListener("input",V(this,ma),{signal:l}),this.editorDiv.addEventListener("paste",V(this,Ma),{signal:l})}disableEditMode(){this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",V(this,Ja)),this._isDraggable=!0,this.editorDiv.removeEventListener("keydown",V(this,ea)),this.editorDiv.removeEventListener("focus",V(this,ba)),this.editorDiv.removeEventListener("blur",V(this,ha)),this.editorDiv.removeEventListener("input",V(this,ma)),this.editorDiv.removeEventListener("paste",V(this,Ma)),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=V(this,pU),U=m(this,pU,b(this,hN,E2).call(this).trimEnd());if(l===U)return;const Z=F=>{if(m(this,pU,F),!F){this.remove();return}b(this,Ic,Ga).call(this),this._uiManager.rebuild(this),b(this,YW,ds).call(this)};this.addCommands({cmd:()=>{Z(U)},undo:()=>{Z(l)},mustExec:!1}),b(this,YW,ds).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){El._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",V(this,Ja)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text"),this.enableEditing(),Vl._l10nPromise.get("pdfjs-free-text-default-content").then(F=>{var t;return(t=this.editorDiv)==null?void 0:t.setAttribute("default-content",F)}),this.editorDiv.contentEditable=!0;const{style:Z}=this.editorDiv;if(Z.fontSize=`calc(${V(this,BU)}px * var(--scale-factor))`,Z.color=V(this,dd),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),wn(this,this.div,["dblclick","keydown"]),this.width){const[F,t]=this.parentDimensions;if(this.annotationElementId){const{position:c}=V(this,XW);let[W,Q]=this.getInitialTranslation();[W,Q]=this.pageTranslationToScreen(W,Q);const[a,n]=this.pageDimensions,[s,R]=this.pageTranslation;let N,h;switch(this.rotation){case 0:N=l+(c[0]-s)/a,h=U+this.height-(c[1]-R)/n;break;case 90:N=l+(c[0]-s)/a,h=U-(c[1]-R)/n,[W,Q]=[Q,-W];break;case 180:N=l-this.width+(c[0]-s)/a,h=U-(c[1]-R)/n,[W,Q]=[-W,-Q];break;case 270:N=l+(c[0]-s-this.height*n)/a,h=U+(c[1]-R-this.width*a)/n,[W,Q]=[-Q,W];break}this.setAt(N*F,h*t,W,Q)}else this.setAt(l*F,U*t,this.width*F,this.height*t);b(this,Ic,Ga).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,F;const t=l.clipboardData||window.clipboardData,{types:c}=t;if(c.length===1&&c[0]==="text/plain")return;l.preventDefault();const W=b(U=El,Fs,mN).call(U,t.getData("text")||"").replaceAll(Na,`
|
||
`);if(!W)return;const Q=window.getSelection();if(!Q.rangeCount)return;this.editorDiv.normalize(),Q.deleteFromDocument();const a=Q.getRangeAt(0);if(!W.includes(`
|
||
`)){a.insertNode(document.createTextNode(W)),this.editorDiv.normalize(),Q.collapseToStart();return}const{startContainer:n,startOffset:s}=a,R=[],N=[];if(n.nodeType===Node.TEXT_NODE){const M=n.parentElement;if(N.push(n.nodeValue.slice(s).replaceAll(Na,"")),M!==this.editorDiv){let J=R;for(const T of this.editorDiv.childNodes){if(T===M){J=N;continue}J.push(b(Z=El,pW,Zs).call(Z,T))}}R.push(n.nodeValue.slice(0,s).replaceAll(Na,""))}else if(n===this.editorDiv){let M=R,J=0;for(const T of this.editorDiv.childNodes)J++===s&&(M=N),M.push(b(F=El,pW,Zs).call(F,T))}m(this,pU,`${R.join(`
|
||
`)}${W}${N.join(`
|
||
`)}`),b(this,Ic,Ga).call(this);const h=new Range;let e=R.reduce((M,J)=>M+J.length,0);for(const{firstChild:M}of this.editorDiv.childNodes)if(M.nodeType===Node.TEXT_NODE){const J=M.nodeValue.length;if(e<=J){h.setStart(M,e),h.setEnd(M,e);break}e-=J}Q.removeAllRanges(),Q.addRange(h)}get contentDiv(){return this.editorDiv}static deserialize(l,U,Z){var F;let t=null;if(l instanceof y2){const{data:{defaultAppearanceData:{fontSize:W,fontColor:Q},rect:a,rotation:n,id:s},textContent:R,textPosition:N,parent:{page:{pageNumber:h}}}=l;if(!R||R.length===0)return null;t=l={annotationType:ll.FREETEXT,color:Array.from(Q),fontSize:W,value:R.join(`
|
||
`),position:N,pageIndex:h-1,rect:a.slice(0),rotation:n,id:s,deleted:!1}}const c=super.deserialize(l,U,Z);return m(c,BU,l.fontSize),m(c,dd,j.makeHexColor(...l.color)),m(c,pU,b(F=El,Fs,mN).call(F,l.value)),c.annotationElementId=l.id||null,m(c,XW,t),c}serialize(l=!1){if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const U=El._internalPadding*this.parentScale,Z=this.getRect(U,U),F=Vl._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:V(this,dd)),t={annotationType:ll.FREETEXT,color:F,fontSize:V(this,BU),value:b(this,bN,w2).call(this),pageIndex:this.pageIndex,rect:Z,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return l?t:this.annotationElementId&&!b(this,eN,C2).call(this,t)?null:(t.id=this.annotationElementId,t)}renderAnnotationElement(l){const U=super.renderAnnotationElement(l);if(this.deleted)return U;const{style:Z}=U;Z.fontSize=`calc(${V(this,BU)}px * var(--scale-factor))`,Z.color=V(this,dd),U.replaceChildren();for(const t of V(this,pU).split(`
|
||
`)){const c=document.createElement("div");c.append(t?document.createTextNode(t):document.createElement("br")),U.append(c)}const F=El._internalPadding*this.parentScale;return l.updateEdited({rect:this.getRect(F,F),popupContent:V(this,pU)}),U}resetAnnotationElement(l){super.resetAnnotationElement(l),l.resetEdited()}};ha=new WeakMap,ba=new WeakMap,ma=new WeakMap,ea=new WeakMap,Ma=new WeakMap,dd=new WeakMap,pU=new WeakMap,Ja=new WeakMap,BU=new WeakMap,XW=new WeakMap,RN=new WeakSet,D2=function(d){const l=Z=>{this.editorDiv.style.fontSize=`calc(${Z}px * var(--scale-factor))`,this.translate(0,-(Z-V(this,BU))*this.parentScale),m(this,BU,Z),b(this,YW,ds).call(this)},U=V(this,BU);this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},NN=new WeakSet,I2=function(d){const l=Z=>{m(this,dd,this.editorDiv.style.color=Z)},U=V(this,dd);this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},hN=new WeakSet,E2=function(){var d;const l=[];this.editorDiv.normalize();for(const U of this.editorDiv.childNodes)l.push(b(d=AU,pW,Zs).call(d,U));return l.join(`
|
||
`)},YW=new WeakSet,ds=function(){const[d,l]=this.parentDimensions;let U;if(this.isAttachedToDOM)U=this.div.getBoundingClientRect();else{const{currentLayer:Z,div:F}=this,t=F.style.display,c=F.classList.contains("hidden");F.classList.remove("hidden"),F.style.display="hidden",Z.div.append(this.div),U=F.getBoundingClientRect(),F.remove(),F.style.display=t,F.classList.toggle("hidden",c)}this.rotation%180===this.parentRotation%180?(this.width=U.width/d,this.height=U.height/l):(this.width=U.height/d,this.height=U.width/l),this.fixAndSetPosition()},pW=new WeakSet,Zs=function(d){return(d.nodeType===Node.TEXT_NODE?d.nodeValue:d.innerText).replaceAll(Na,"")},Ic=new WeakSet,Ga=function(){if(this.editorDiv.replaceChildren(),!!V(this,pU))for(const d of V(this,pU).split(`
|
||
`)){const l=document.createElement("div");l.append(d?document.createTextNode(d):document.createElement("br")),this.editorDiv.append(l)}},bN=new WeakSet,w2=function(){return V(this,pU).replaceAll(" "," ")},Fs=new WeakSet,mN=function(d){return d.replaceAll(" "," ")},eN=new WeakSet,C2=function(d){const{value:l,fontSize:U,color:Z,pageIndex:F}=V(this,XW);return this._hasBeenMoved||d.value!==l||d.fontSize!==U||d.color.some((t,c)=>t!==Z[c])||d.pageIndex!==F},i(AU,pW),i(AU,Fs),f(AU,"_freeTextDefaultContent",""),f(AU,"_internalPadding",0),f(AU,"_defaultColor",null),f(AU,"_defaultFontSize",10),f(AU,"_type","freetext"),f(AU,"_editorType",ll.FREETEXT);let mT=AU;var UQ,KZ,HU,Ti,bm,q0,dQ,Si,mm,Xi,em,ZQ,Yi,Mm;let MN=(Mm=class{constructor(d,l=0,U=0,Z=!0){i(this,Ti),i(this,q0),i(this,Si),i(this,Xi),i(this,ZQ),i(this,UQ,void 0),i(this,KZ,[]),i(this,HU,[]);let F=1/0,t=-1/0,c=1/0,W=-1/0;const Q=jF(10,-4);for(const{x:e,y:M,width:J,height:T}of d){const G=Math.floor((e-l)/Q)*Q,Y=Math.ceil((e+J+l)/Q)*Q,S=Math.floor((M-l)/Q)*Q,X=Math.ceil((M+T+l)/Q)*Q,B=[G,S,X,!0],k=[Y,S,X,!1];V(this,KZ).push(B,k),F=Math.min(F,G),t=Math.max(t,Y),c=Math.min(c,S),W=Math.max(W,X)}const a=t-F+2*U,n=W-c+2*U,s=F-U,R=c-U,N=V(this,KZ).at(Z?-1:-2),h=[N[0],N[2]];for(const e of V(this,KZ)){const[M,J,T]=e;e[0]=(M-s)/a,e[1]=(J-R)/n,e[2]=(T-R)/n}m(this,UQ,{x:s,y:R,width:a,height:n,lastPoint:h})}getOutlines(){V(this,KZ).sort((l,U)=>l[0]-U[0]||l[1]-U[1]||l[2]-U[2]);const d=[];for(const l of V(this,KZ))l[3]?(d.push(...b(this,ZQ,Yi).call(this,l)),b(this,Si,mm).call(this,l)):(b(this,Xi,em).call(this,l),d.push(...b(this,ZQ,Yi).call(this,l)));return b(this,Ti,bm).call(this,d)}},UQ=new WeakMap,KZ=new WeakMap,HU=new WeakMap,Ti=new WeakSet,bm=function(d){const l=[],U=new Set;for(const t of d){const[c,W,Q]=t;l.push([c,W,t],[c,Q,t])}l.sort((t,c)=>t[1]-c[1]||t[0]-c[0]);for(let t=0,c=l.length;t<c;t+=2){const W=l[t][2],Q=l[t+1][2];W.push(Q),Q.push(W),U.add(W),U.add(Q)}const Z=[];let F;for(;U.size>0;){const t=U.values().next().value;let[c,W,Q,a,n]=t;U.delete(t);let s=c,R=W;for(F=[c,Q],Z.push(F);;){let N;if(U.has(a))N=a;else if(U.has(n))N=n;else break;U.delete(N),[c,W,Q,a,n]=N,s!==c&&(F.push(s,R,c,R===W?W:Q),s=c),R=R===W?Q:W}F.push(s,R)}return new eT(Z,V(this,UQ))},q0=new WeakSet,dQ=function(d){const l=V(this,HU);let U=0,Z=l.length-1;for(;U<=Z;){const F=U+Z>>1,t=l[F][0];if(t===d)return F;t<d?U=F+1:Z=F-1}return Z+1},Si=new WeakSet,mm=function([,d,l]){const U=b(this,q0,dQ).call(this,d);V(this,HU).splice(U,0,[d,l])},Xi=new WeakSet,em=function([,d,l]){const U=b(this,q0,dQ).call(this,d);for(let Z=U;Z<V(this,HU).length;Z++){const[F,t]=V(this,HU)[Z];if(F!==d)break;if(F===d&&t===l){V(this,HU).splice(Z,1);return}}for(let Z=U-1;Z>=0;Z--){const[F,t]=V(this,HU)[Z];if(F!==d)break;if(F===d&&t===l){V(this,HU).splice(Z,1);return}}},ZQ=new WeakSet,Yi=function(d){const[l,U,Z]=d,F=[[l,U,Z]],t=b(this,q0,dQ).call(this,Z);for(let c=0;c<t;c++){const[W,Q]=V(this,HU)[c];for(let a=0,n=F.length;a<n;a++){const[,s,R]=F[a];if(!(Q<=s||R<=W)){if(s>=W){if(R>Q)F[a][1]=Q;else{if(n===1)return[];F.splice(a,1),a--,n--}continue}F[a][2]=W,R>Q&&F.push([l,Q,R])}}}return F},Mm);class x2{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 XN}}var Ta,Ec;class eT extends x2{constructor(l,U){super(),i(this,Ta,void 0),i(this,Ec,void 0),m(this,Ec,l),m(this,Ta,U)}toSVGPath(){const l=[];for(const U of V(this,Ec)){let[Z,F]=U;l.push(`M${Z} ${F}`);for(let t=2;t<U.length;t+=2){const c=U[t],W=U[t+1];c===Z?(l.push(`V${W}`),F=W):W===F&&(l.push(`H${c}`),Z=c)}l.push("Z")}return l.join(" ")}serialize([l,U,Z,F],t){const c=[],W=Z-l,Q=F-U;for(const a of V(this,Ec)){const n=new Array(a.length);for(let s=0;s<a.length;s+=2)n[s]=l+a[s]*W,n[s+1]=F-a[s+1]*Q;c.push(n)}return c}get box(){return V(this,Ta)}}Ta=new WeakMap,Ec=new WeakMap;var Bd,FZ,wc,Cc,Xd,q,R0,N0,Sa,Xa,xc,rc,WF,Ya,pi,JN,pa,GN;const Tt=class TN{constructor({x:l,y:U},Z,F,t,c,W=0){i(this,pa),i(this,Bd,void 0),i(this,FZ,[]),i(this,wc,void 0),i(this,Cc,void 0),i(this,Xd,[]),i(this,q,new Float64Array(18)),i(this,R0,void 0),i(this,N0,void 0),i(this,Sa,void 0),i(this,Xa,void 0),i(this,xc,void 0),i(this,rc,void 0),i(this,WF,[]),m(this,Bd,Z),m(this,rc,t*F),m(this,Cc,c),V(this,q).set([NaN,NaN,NaN,NaN,l,U],6),m(this,wc,W),m(this,Xa,V(TN,Ya)*F),m(this,Sa,V(TN,JN)*F),m(this,xc,F),V(this,WF).push(l,U)}get free(){return!0}isEmpty(){return isNaN(V(this,q)[8])}add({x:l,y:U}){var Z;m(this,R0,l),m(this,N0,U);const[F,t,c,W]=V(this,Bd);let[Q,a,n,s]=V(this,q).subarray(8,12);const R=l-n,N=U-s,h=Math.hypot(R,N);if(h<V(this,Sa))return!1;const e=h-V(this,Xa),M=e/h,J=M*R,T=M*N;let G=Q,Y=a;Q=n,a=s,n+=J,s+=T,(Z=V(this,WF))==null||Z.push(l,U);const S=-T/e,X=J/e,B=S*V(this,rc),k=X*V(this,rc);return V(this,q).set(V(this,q).subarray(2,8),0),V(this,q).set([n+B,s+k],4),V(this,q).set(V(this,q).subarray(14,18),12),V(this,q).set([n-B,s-k],16),isNaN(V(this,q)[6])?(V(this,Xd).length===0&&(V(this,q).set([Q+B,a+k],2),V(this,Xd).push(NaN,NaN,NaN,NaN,(Q+B-F)/c,(a+k-t)/W),V(this,q).set([Q-B,a-k],14),V(this,FZ).push(NaN,NaN,NaN,NaN,(Q-B-F)/c,(a-k-t)/W)),V(this,q).set([G,Y,Q,a,n,s],6),!this.isEmpty()):(V(this,q).set([G,Y,Q,a,n,s],6),Math.abs(Math.atan2(Y-a,G-Q)-Math.atan2(T,J))<Math.PI/2?([Q,a,n,s]=V(this,q).subarray(2,6),V(this,Xd).push(NaN,NaN,NaN,NaN,((Q+n)/2-F)/c,((a+s)/2-t)/W),[Q,a,G,Y]=V(this,q).subarray(14,18),V(this,FZ).push(NaN,NaN,NaN,NaN,((G+Q)/2-F)/c,((Y+a)/2-t)/W),!0):([G,Y,Q,a,n,s]=V(this,q).subarray(0,6),V(this,Xd).push(((G+5*Q)/6-F)/c,((Y+5*a)/6-t)/W,((5*Q+n)/6-F)/c,((5*a+s)/6-t)/W,((Q+n)/2-F)/c,((a+s)/2-t)/W),[n,s,Q,a,G,Y]=V(this,q).subarray(12,18),V(this,FZ).push(((G+5*Q)/6-F)/c,((Y+5*a)/6-t)/W,((5*Q+n)/6-F)/c,((5*a+s)/6-t)/W,((Q+n)/2-F)/c,((a+s)/2-t)/W),!0))}toSVGPath(){if(this.isEmpty())return"";const l=V(this,Xd),U=V(this,FZ),Z=V(this,q).subarray(4,6),F=V(this,q).subarray(16,18),[t,c,W,Q]=V(this,Bd),[a,n,s,R]=b(this,pa,GN).call(this);if(isNaN(V(this,q)[6])&&!this.isEmpty())return`M${(V(this,q)[2]-t)/W} ${(V(this,q)[3]-c)/Q} L${(V(this,q)[4]-t)/W} ${(V(this,q)[5]-c)/Q} L${a} ${n} L${s} ${R} L${(V(this,q)[16]-t)/W} ${(V(this,q)[17]-c)/Q} L${(V(this,q)[14]-t)/W} ${(V(this,q)[15]-c)/Q} Z`;const N=[];N.push(`M${l[4]} ${l[5]}`);for(let h=6;h<l.length;h+=6)isNaN(l[h])?N.push(`L${l[h+4]} ${l[h+5]}`):N.push(`C${l[h]} ${l[h+1]} ${l[h+2]} ${l[h+3]} ${l[h+4]} ${l[h+5]}`);N.push(`L${(Z[0]-t)/W} ${(Z[1]-c)/Q} L${a} ${n} L${s} ${R} L${(F[0]-t)/W} ${(F[1]-c)/Q}`);for(let h=U.length-6;h>=6;h-=6)isNaN(U[h])?N.push(`L${U[h+4]} ${U[h+5]}`):N.push(`C${U[h]} ${U[h+1]} ${U[h+2]} ${U[h+3]} ${U[h+4]} ${U[h+5]}`);return N.push(`L${U[4]} ${U[5]} Z`),N.join(" ")}getOutlines(){var T;var l;const U=V(this,Xd),Z=V(this,FZ),F=V(this,q),t=F.subarray(4,6),c=F.subarray(16,18),[W,Q,a,n]=V(this,Bd),s=new Float64Array(((T=(l=V(this,WF))==null?void 0:l.length)!=null?T:0)+2);for(let G=0,Y=s.length-2;G<Y;G+=2)s[G]=(V(this,WF)[G]-W)/a,s[G+1]=(V(this,WF)[G+1]-Q)/n;s[s.length-2]=(V(this,R0)-W)/a,s[s.length-1]=(V(this,N0)-Q)/n;const[R,N,h,e]=b(this,pa,GN).call(this);if(isNaN(F[6])&&!this.isEmpty()){const G=new Float64Array(36);return G.set([NaN,NaN,NaN,NaN,(F[2]-W)/a,(F[3]-Q)/n,NaN,NaN,NaN,NaN,(F[4]-W)/a,(F[5]-Q)/n,NaN,NaN,NaN,NaN,R,N,NaN,NaN,NaN,NaN,h,e,NaN,NaN,NaN,NaN,(F[16]-W)/a,(F[17]-Q)/n,NaN,NaN,NaN,NaN,(F[14]-W)/a,(F[15]-Q)/n],0),new XN(G,s,V(this,Bd),V(this,xc),V(this,wc),V(this,Cc))}const M=new Float64Array(V(this,Xd).length+24+V(this,FZ).length);let J=U.length;for(let G=0;G<J;G+=2){if(isNaN(U[G])){M[G]=M[G+1]=NaN;continue}M[G]=U[G],M[G+1]=U[G+1]}M.set([NaN,NaN,NaN,NaN,(t[0]-W)/a,(t[1]-Q)/n,NaN,NaN,NaN,NaN,R,N,NaN,NaN,NaN,NaN,h,e,NaN,NaN,NaN,NaN,(c[0]-W)/a,(c[1]-Q)/n],J),J+=24;for(let G=Z.length-6;G>=6;G-=6)for(let Y=0;Y<6;Y+=2){if(isNaN(Z[G+Y])){M[J]=M[J+1]=NaN,J+=2;continue}M[J]=Z[G+Y],M[J+1]=Z[G+Y+1],J+=2}return M.set([NaN,NaN,NaN,NaN,Z[4],Z[5]],J),new XN(M,s,V(this,Bd),V(this,xc),V(this,wc),V(this,Cc))}};Bd=new WeakMap,FZ=new WeakMap,wc=new WeakMap,Cc=new WeakMap,Xd=new WeakMap,q=new WeakMap,R0=new WeakMap,N0=new WeakMap,Sa=new WeakMap,Xa=new WeakMap,xc=new WeakMap,rc=new WeakMap,WF=new WeakMap,Ya=new WeakMap,pi=new WeakMap,JN=new WeakMap,pa=new WeakSet,GN=function(){const d=V(this,q).subarray(4,6),l=V(this,q).subarray(16,18),[U,Z,F,t]=V(this,Bd);return[(V(this,R0)+(d[0]-l[0])/2-U)/F,(V(this,N0)+(d[1]-l[1])/2-Z)/t,(V(this,R0)+(l[0]-d[0])/2-U)/F,(V(this,N0)+(l[1]-d[1])/2-Z)/t]},i(Tt,Ya,8),i(Tt,pi,2),i(Tt,JN,V(Tt,Ya)+V(Tt,pi));let r2=Tt;var jc,$t,SZ,Ba,TU,ua,ml,St,Oc,Xt,gc,SN,j2;class XN extends x2{constructor(l,U,Z,F,t,c){super(),i(this,St),i(this,Xt),i(this,SN),i(this,jc,void 0),i(this,$t,null),i(this,SZ,void 0),i(this,Ba,void 0),i(this,TU,void 0),i(this,ua,void 0),i(this,ml,void 0),m(this,ml,l),m(this,TU,U),m(this,jc,Z),m(this,ua,F),m(this,SZ,t),m(this,Ba,c),b(this,SN,j2).call(this,c);const{x:W,y:Q,width:a,height:n}=V(this,$t);for(let s=0,R=l.length;s<R;s+=2)l[s]=(l[s]-W)/a,l[s+1]=(l[s+1]-Q)/n;for(let s=0,R=U.length;s<R;s+=2)U[s]=(U[s]-W)/a,U[s+1]=(U[s+1]-Q)/n}toSVGPath(){const l=[`M${V(this,ml)[4]} ${V(this,ml)[5]}`];for(let U=6,Z=V(this,ml).length;U<Z;U+=6){if(isNaN(V(this,ml)[U])){l.push(`L${V(this,ml)[U+4]} ${V(this,ml)[U+5]}`);continue}l.push(`C${V(this,ml)[U]} ${V(this,ml)[U+1]} ${V(this,ml)[U+2]} ${V(this,ml)[U+3]} ${V(this,ml)[U+4]} ${V(this,ml)[U+5]}`)}return l.push("Z"),l.join(" ")}serialize([l,U,Z,F],t){const c=Z-l,W=F-U;let Q,a;switch(t){case 0:Q=b(this,St,Oc).call(this,V(this,ml),l,F,c,-W),a=b(this,St,Oc).call(this,V(this,TU),l,F,c,-W);break;case 90:Q=b(this,Xt,gc).call(this,V(this,ml),l,U,c,W),a=b(this,Xt,gc).call(this,V(this,TU),l,U,c,W);break;case 180:Q=b(this,St,Oc).call(this,V(this,ml),Z,U,-c,W),a=b(this,St,Oc).call(this,V(this,TU),Z,U,-c,W);break;case 270:Q=b(this,Xt,gc).call(this,V(this,ml),Z,F,-c,-W),a=b(this,Xt,gc).call(this,V(this,TU),Z,F,-c,-W);break}return{outline:Array.from(Q),points:[Array.from(a)]}}get box(){return V(this,$t)}getNewOutline(l,U){const{x:Z,y:F,width:t,height:c}=V(this,$t),[W,Q,a,n]=V(this,jc),s=t*a,R=c*n,N=Z*a+W,h=F*n+Q,e=new r2({x:V(this,TU)[0]*s+N,y:V(this,TU)[1]*R+h},V(this,jc),V(this,ua),l,V(this,Ba),U!=null?U:V(this,SZ));for(let M=2;M<V(this,TU).length;M+=2)e.add({x:V(this,TU)[M]*s+N,y:V(this,TU)[M+1]*R+h});return e.getOutlines()}}jc=new WeakMap,$t=new WeakMap,SZ=new WeakMap,Ba=new WeakMap,TU=new WeakMap,ua=new WeakMap,ml=new WeakMap,St=new WeakSet,Oc=function(d,l,U,Z,F){const t=new Float64Array(d.length);for(let c=0,W=d.length;c<W;c+=2)t[c]=l+d[c]*Z,t[c+1]=U+d[c+1]*F;return t},Xt=new WeakSet,gc=function(d,l,U,Z,F){const t=new Float64Array(d.length);for(let c=0,W=d.length;c<W;c+=2)t[c]=l+d[c+1]*Z,t[c+1]=U+d[c]*F;return t},SN=new WeakSet,j2=function(d){const l=V(this,ml);let U=l[4],Z=l[5],F=U,t=Z,c=U,W=Z,Q=U,a=Z;const n=d?Math.max:Math.min;for(let e=6,M=l.length;e<M;e+=6){if(isNaN(l[e]))F=Math.min(F,l[e+4]),t=Math.min(t,l[e+5]),c=Math.max(c,l[e+4]),W=Math.max(W,l[e+5]),a<l[e+5]?(Q=l[e+4],a=l[e+5]):a===l[e+5]&&(Q=n(Q,l[e+4]));else{const J=j.bezierBoundingBox(U,Z,...l.slice(e,e+6));F=Math.min(F,J[0]),t=Math.min(t,J[1]),c=Math.max(c,J[2]),W=Math.max(W,J[3]),a<J[3]?(Q=J[2],a=J[3]):a===J[3]&&(Q=n(Q,J[2]))}U=l[e+4],Z=l[e+5]}const s=F-V(this,SZ),R=t-V(this,SZ),N=c-F+2*V(this,SZ),h=W-t+2*V(this,SZ);m(this,$t,{x:s,y:R,width:N,height:h,lastPoint:[Q,a]})};var FQ,tQ,PU,dt,$0,ul,cQ,lc,WQ,VQ,fU,Uc,QQ,Bi,aQ,ui,oi,Jm,Ad,vZ,yi,Gm,Nd,_d,hd;let O2=(hd=class{constructor({editor:d=null,uiManager:l=null}){i(this,QQ),i(this,aQ),i(this,oi),i(this,Ad),i(this,yi),i(this,Nd),i(this,FQ,b(this,oi,Jm).bind(this)),i(this,tQ,b(this,yi,Gm).bind(this)),i(this,PU,null),i(this,dt,null),i(this,$0,void 0),i(this,ul,null),i(this,cQ,!1),i(this,lc,!1),i(this,WQ,null),i(this,VQ,void 0),i(this,fU,null),i(this,Uc,void 0);var U;d?(m(this,lc,!1),m(this,Uc,P.HIGHLIGHT_COLOR),m(this,WQ,d)):(m(this,lc,!0),m(this,Uc,P.HIGHLIGHT_DEFAULT_COLOR)),m(this,fU,(d==null?void 0:d._uiManager)||l),m(this,VQ,V(this,fU)._eventBus),m(this,$0,(d==null?void 0:d.color)||((U=V(this,fU))==null?void 0:U.highlightColors.values().next().value)||"#FFFF98")}static get _keyboardManager(){return Ul(this,"_keyboardManager",new UV([[["Escape","mac+Escape"],hd.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],hd.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],hd.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],hd.prototype._moveToPrevious],[["Home","mac+Home"],hd.prototype._moveToBeginning],[["End","mac+End"],hd.prototype._moveToEnd]]))}renderButton(){const d=m(this,PU,document.createElement("button"));d.className="colorPicker",d.tabIndex="0",d.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),d.setAttribute("aria-haspopup",!0);const l=V(this,fU)._signal;d.addEventListener("click",b(this,Ad,vZ).bind(this),{signal:l}),d.addEventListener("keydown",V(this,FQ),{signal:l});const U=m(this,dt,document.createElement("span"));return U.className="swatch",U.setAttribute("aria-hidden",!0),U.style.backgroundColor=V(this,$0),d.append(U),d}renderMainDropdown(){const d=m(this,ul,b(this,QQ,Bi).call(this));return d.setAttribute("aria-orientation","horizontal"),d.setAttribute("aria-labelledby","highlightColorPickerLabel"),d}_colorSelectFromKeyboard(d){if(d.target===V(this,PU)){b(this,Ad,vZ).call(this,d);return}const l=d.target.getAttribute("data-color");l&&b(this,aQ,ui).call(this,l,d)}_moveToNext(d){var l,U;if(!V(this,Nd,_d)){b(this,Ad,vZ).call(this,d);return}if(d.target===V(this,PU)){(l=V(this,ul).firstChild)==null||l.focus();return}(U=d.target.nextSibling)==null||U.focus()}_moveToPrevious(d){var l,U;if(d.target===((l=V(this,ul))==null?void 0:l.firstChild)||d.target===V(this,PU)){V(this,Nd,_d)&&this._hideDropdownFromKeyboard();return}V(this,Nd,_d)||b(this,Ad,vZ).call(this,d),(U=d.target.previousSibling)==null||U.focus()}_moveToBeginning(d){var l;if(!V(this,Nd,_d)){b(this,Ad,vZ).call(this,d);return}(l=V(this,ul).firstChild)==null||l.focus()}_moveToEnd(d){var l;if(!V(this,Nd,_d)){b(this,Ad,vZ).call(this,d);return}(l=V(this,ul).lastChild)==null||l.focus()}hideDropdown(){var d;(d=V(this,ul))==null||d.classList.add("hidden"),window.removeEventListener("pointerdown",V(this,tQ))}_hideDropdownFromKeyboard(){var d;if(!V(this,lc)){if(!V(this,Nd,_d)){(d=V(this,WQ))==null||d.unselect();return}this.hideDropdown(),V(this,PU).focus({preventScroll:!0,focusVisible:V(this,cQ)})}}updateColor(d){if(V(this,dt)&&(V(this,dt).style.backgroundColor=d),!V(this,ul))return;const l=V(this,fU).highlightColors.values();for(const U of V(this,ul).children)U.setAttribute("aria-selected",l.next().value===d)}destroy(){var d,l;(d=V(this,PU))==null||d.remove(),m(this,PU,null),m(this,dt,null),(l=V(this,ul))==null||l.remove(),m(this,ul,null)}},FQ=new WeakMap,tQ=new WeakMap,PU=new WeakMap,dt=new WeakMap,$0=new WeakMap,ul=new WeakMap,cQ=new WeakMap,lc=new WeakMap,WQ=new WeakMap,VQ=new WeakMap,fU=new WeakMap,Uc=new WeakMap,QQ=new WeakSet,Bi=function(){const d=document.createElement("div"),l=V(this,fU)._signal;d.addEventListener("contextmenu",iU,{signal:l}),d.className="dropdown",d.role="listbox",d.setAttribute("aria-multiselectable",!1),d.setAttribute("aria-orientation","vertical"),d.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[U,Z]of V(this,fU).highlightColors){const F=document.createElement("button");F.tabIndex="0",F.role="option",F.setAttribute("data-color",Z),F.title=U,F.setAttribute("data-l10n-id",`pdfjs-editor-colorpicker-${U}`);const t=document.createElement("span");F.append(t),t.className="swatch",t.style.backgroundColor=Z,F.setAttribute("aria-selected",Z===V(this,$0)),F.addEventListener("click",b(this,aQ,ui).bind(this,Z),{signal:l}),d.append(F)}return d.addEventListener("keydown",V(this,FQ),{signal:l}),d},aQ=new WeakSet,ui=function(d,l){l.stopPropagation(),V(this,VQ).dispatch("switchannotationeditorparams",{source:this,type:V(this,Uc),value:d})},oi=new WeakSet,Jm=function(d){hd._keyboardManager.exec(this,d)},Ad=new WeakSet,vZ=function(d){if(V(this,Nd,_d)){this.hideDropdown();return}if(m(this,cQ,d.detail===0),window.addEventListener("pointerdown",V(this,tQ),{signal:V(this,fU)._signal}),V(this,ul)){V(this,ul).classList.remove("hidden");return}const l=m(this,ul,b(this,QQ,Bi).call(this));V(this,PU).append(l)},yi=new WeakSet,Gm=function(d){var l;(l=V(this,ul))!=null&&l.contains(d.target)||this.hideDropdown()},Nd=new WeakSet,_d=function(){return V(this,ul)&&!V(this,ul).classList.contains("hidden")},hd);var BW,ts,oF,l0,uW,EU,cs,Ws,h0,ld,VU,uU,YN,oW,U0,yl,Kc,zd,oa,ya,pN,Vs,BN,uN,g2,oN,K2,yN,Tm,ka,kN,Yt,vc,yF,b0,LN,v2,Hc,La,d0,yW,zN,H2,DN,P2,IN,f2,EN,A2;const vl=class wl extends Vl{constructor(l){super(jU(Nl({},l),{name:"highlightEditor"})),i(this,ya),i(this,Vs),i(this,uN),i(this,oN),i(this,yN),i(this,ka),i(this,Yt),i(this,LN),i(this,Hc),i(this,d0),i(this,zN),i(this,DN),i(this,BW,null),i(this,ts,0),i(this,oF,void 0),i(this,l0,null),i(this,uW,null),i(this,EU,null),i(this,cs,null),i(this,Ws,0),i(this,h0,null),i(this,ld,null),i(this,VU,null),i(this,uU,!1),i(this,YN,b(this,LN,v2).bind(this)),i(this,oW,null),i(this,U0,void 0),i(this,yl,null),i(this,Kc,""),i(this,zd,void 0),i(this,oa,""),this.color=l.color||wl._defaultColor,m(this,zd,l.thickness||wl._defaultThickness),m(this,U0,l.opacity||wl._defaultOpacity),m(this,oF,l.boxes||null),m(this,oa,l.methodOfCreation||""),m(this,Kc,l.text||""),this._isDraggable=!1,l.highlightId>-1?(m(this,uU,!0),b(this,Vs,BN).call(this,l),b(this,Yt,vc).call(this)):(m(this,BW,l.anchorNode),m(this,ts,l.anchorOffset),m(this,cs,l.focusNode),m(this,Ws,l.focusOffset),b(this,ya,pN).call(this),b(this,Yt,vc).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const l=wl.prototype;return Ul(this,"_keyboardManager",new UV([[["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:V(this,uU)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:V(this,zd),methodOfCreation:V(this,oa)}}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;Vl.initialize(l,U),wl._defaultColor||(wl._defaultColor=((Z=U.highlightColors)==null?void 0:Z.values().next().value)||"#fff066")}static updateDefaultParams(l,U){switch(l){case P.HIGHLIGHT_DEFAULT_COLOR:wl._defaultColor=U;break;case P.HIGHLIGHT_THICKNESS:wl._defaultThickness=U;break}}translateInPage(l,U){}get toolbarPosition(){return V(this,oW)}updateParams(l,U){switch(l){case P.HIGHLIGHT_COLOR:b(this,uN,g2).call(this,U);break;case P.HIGHLIGHT_THICKNESS:b(this,oN,K2).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[P.HIGHLIGHT_DEFAULT_COLOR,wl._defaultColor],[P.HIGHLIGHT_THICKNESS,wl._defaultThickness]]}get propertiesToUpdate(){return[[P.HIGHLIGHT_COLOR,this.color||wl._defaultColor],[P.HIGHLIGHT_THICKNESS,V(this,zd)||wl._defaultThickness],[P.HIGHLIGHT_FREE,V(this,uU)]]}addEditToolbar(){return D(this,null,function*(){const l=yield Gb(wl.prototype,this,"addEditToolbar").call(this);return l?(this._uiManager.highlightColors&&(m(this,uW,new O2({editor:this})),l.addColorPicker(V(this,uW))),l):null})}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(b(this,d0,yW).call(this))}getBaseTranslation(){return[0,0]}getRect(l,U){return super.getRect(l,U,b(this,d0,yW).call(this))}onceAdded(){this.parent.addUndoableEditor(this),this.div.focus()}remove(){b(this,ka,kN).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(b(this,Yt,vc).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(l){var U;let Z=!1;this.parent&&!l?b(this,ka,kN).call(this):l&&(b(this,Yt,vc).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,F;const{drawLayer:t}=this.parent;let c;V(this,uU)?(l=(l-this.rotation+360)%360,c=b(U=wl,yF,b0).call(U,V(this,ld).box,l)):c=b(Z=wl,yF,b0).call(Z,this,l),t.rotate(V(this,VU),l),t.rotate(V(this,yl),l),t.updateBox(V(this,VU),c),t.updateBox(V(this,yl),b(F=wl,yF,b0).call(F,V(this,EU).box,l))}render(){if(this.div)return this.div;const l=super.render();V(this,Kc)&&(l.setAttribute("aria-label",V(this,Kc)),l.setAttribute("role","mark")),V(this,uU)?l.classList.add("free"):this.div.addEventListener("keydown",V(this,YN),{signal:this._uiManager._signal});const U=m(this,h0,document.createElement("div"));l.append(U),U.setAttribute("aria-hidden","true"),U.className="internal",U.style.clipPath=V(this,l0);const[Z,F]=this.parentDimensions;return this.setDims(this.width*Z,this.height*F),wn(this,V(this,h0),["pointerover","pointerleave"]),this.enableEditing(),l}pointerover(){this.parent.drawLayer.addClass(V(this,yl),"hovered")}pointerleave(){this.parent.drawLayer.removeClass(V(this,yl),"hovered")}_moveCaret(l){switch(this.parent.unselect(this),l){case 0:case 2:b(this,Hc,La).call(this,!0);break;case 1:case 3:b(this,Hc,La).call(this,!1);break}}select(){var l,U;super.select(),V(this,yl)&&((l=this.parent)==null||l.drawLayer.removeClass(V(this,yl),"hovered"),(U=this.parent)==null||U.drawLayer.addClass(V(this,yl),"selected"))}unselect(){var l;super.unselect(),V(this,yl)&&((l=this.parent)==null||l.drawLayer.removeClass(V(this,yl),"selected"),V(this,uU)||b(this,Hc,La).call(this,!1))}get _mustFixPosition(){return!V(this,uU)}show(l=this._isVisible){super.show(l),this.parent&&(this.parent.drawLayer.show(V(this,VU),l),this.parent.drawLayer.show(V(this,yl),l))}static startHighlighting(l,U,{target:Z,x:F,y:t}){const{x:c,y:W,width:Q,height:a}=Z.getBoundingClientRect(),n=e=>{b(this,IN,f2).call(this,l,e)},s=l._signal,R={capture:!0,passive:!1,signal:s},N=e=>{e.preventDefault(),e.stopPropagation()},h=e=>{Z.removeEventListener("pointermove",n),window.removeEventListener("blur",h),window.removeEventListener("pointerup",h),window.removeEventListener("pointerdown",N,R),window.removeEventListener("contextmenu",iU),b(this,EN,A2).call(this,l,e)};window.addEventListener("blur",h,{signal:s}),window.addEventListener("pointerup",h,{signal:s}),window.addEventListener("pointerdown",N,R),window.addEventListener("contextmenu",iU,{signal:s}),Z.addEventListener("pointermove",n,{signal:s}),this._freeHighlight=new r2({x:F,y:t},[c,W,Q,a],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 F;const t=super.deserialize(l,U,Z),{rect:[c,W,Q,a],color:n,quadPoints:s}=l;t.color=j.makeHexColor(...n),m(t,U0,l.opacity);const[R,N]=t.pageDimensions;t.width=(Q-c)/R,t.height=(a-W)/N;const h=m(t,oF,[]);for(let e=0;e<s.length;e+=8)h.push({x:(s[4]-Q)/R,y:(a-(1-s[e+5]))/N,width:(s[e+2]-s[e])/R,height:(s[e+5]-s[e+1])/N});return b(F=t,ya,pN).call(F),t}serialize(l=!1){if(this.isEmpty()||l)return null;const U=this.getRect(0,0),Z=Vl._colorManager.convert(this.color);return{annotationType:ll.HIGHLIGHT,color:Z,opacity:V(this,U0),thickness:V(this,zd),quadPoints:b(this,zN,H2).call(this),outlines:b(this,DN,P2).call(this,U),pageIndex:this.pageIndex,rect:U,rotation:b(this,d0,yW).call(this),structTreeParentId:this._structTreeParentId}}static canCreateNewEmptyEditor(){return!1}};BW=new WeakMap,ts=new WeakMap,oF=new WeakMap,l0=new WeakMap,uW=new WeakMap,EU=new WeakMap,cs=new WeakMap,Ws=new WeakMap,h0=new WeakMap,ld=new WeakMap,VU=new WeakMap,uU=new WeakMap,YN=new WeakMap,oW=new WeakMap,U0=new WeakMap,yl=new WeakMap,Kc=new WeakMap,zd=new WeakMap,oa=new WeakMap,ya=new WeakSet,pN=function(){const d=new MN(V(this,oF),.001);m(this,ld,d.getOutlines()),{x:this.x,y:this.y,width:this.width,height:this.height}=V(this,ld).box;const l=new MN(V(this,oF),.0025,.001,this._uiManager.direction==="ltr");m(this,EU,l.getOutlines());const{lastPoint:U}=V(this,EU).box;m(this,oW,[(U[0]-this.x)/this.width,(U[1]-this.y)/this.height])},Vs=new WeakSet,BN=function({highlightOutlines:d,highlightId:l,clipPathId:U}){var Z,F;if(m(this,ld,d),m(this,EU,d.getNewOutline(V(this,zd)/2+1.5,.0025)),l>=0)m(this,VU,l),m(this,l0,U),this.parent.drawLayer.finalizeLine(l,d),m(this,yl,this.parent.drawLayer.highlightOutline(V(this,EU)));else if(this.parent){const s=this.parent.viewport.rotation;this.parent.drawLayer.updateLine(V(this,VU),d),this.parent.drawLayer.updateBox(V(this,VU),b(Z=vl,yF,b0).call(Z,V(this,ld).box,(s-this.rotation+360)%360)),this.parent.drawLayer.updateLine(V(this,yl),V(this,EU)),this.parent.drawLayer.updateBox(V(this,yl),b(F=vl,yF,b0).call(F,V(this,EU).box,s))}const{x:c,y:W,width:Q,height:a}=d.box;switch(this.rotation){case 0:this.x=c,this.y=W,this.width=Q,this.height=a;break;case 90:{const[s,R]=this.parentDimensions;this.x=W,this.y=1-c,this.width=Q*R/s,this.height=a*s/R;break}case 180:this.x=1-c,this.y=1-W,this.width=Q,this.height=a;break;case 270:{const[s,R]=this.parentDimensions;this.x=1-W,this.y=c,this.width=Q*R/s,this.height=a*s/R;break}}const{lastPoint:n}=V(this,EU).box;m(this,oW,[(n[0]-c)/Q,(n[1]-W)/a])},uN=new WeakSet,g2=function(d){const l=Z=>{var F,t;this.color=Z,(F=this.parent)==null||F.drawLayer.changeColor(V(this,VU),Z),(t=V(this,uW))==null||t.updateColor(Z)},U=this.color;this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(d)},!0)},oN=new WeakSet,K2=function(d){const l=V(this,zd),U=Z=>{m(this,zd,Z),b(this,yN,Tm).call(this,Z)};this.addCommands({cmd:U.bind(this,d),undo:U.bind(this,l),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:d},!0)},yN=new WeakSet,Tm=function(d){if(!V(this,uU))return;b(this,Vs,BN).call(this,{highlightOutlines:V(this,ld).getNewOutline(d/2)}),this.fixAndSetPosition();const[l,U]=this.parentDimensions;this.setDims(this.width*l,this.height*U)},ka=new WeakSet,kN=function(){V(this,VU)===null||!this.parent||(this.parent.drawLayer.remove(V(this,VU)),m(this,VU,null),this.parent.drawLayer.remove(V(this,yl)),m(this,yl,null))},Yt=new WeakSet,vc=function(d=this.parent){V(this,VU)===null&&({id:bU(this,VU)._,clipPathId:bU(this,l0)._}=d.drawLayer.highlight(V(this,ld),this.color,V(this,U0)),m(this,yl,d.drawLayer.highlightOutline(V(this,EU))),V(this,h0)&&(V(this,h0).style.clipPath=V(this,l0)))},yF=new WeakSet,b0=function({x:d,y:l,width:U,height:Z},F){switch(F){case 90:return{x:1-l-Z,y:d,width:Z,height:U};case 180:return{x:1-d-U,y:1-l-Z,width:U,height:Z};case 270:return{x:l,y:1-d-U,width:Z,height:U}}return{x:d,y:l,width:U,height:Z}},LN=new WeakSet,v2=function(d){vl._keyboardManager.exec(this,d)},Hc=new WeakSet,La=function(d){if(!V(this,BW))return;const l=window.getSelection();d?l.setPosition(V(this,BW),V(this,ts)):l.setPosition(V(this,cs),V(this,Ws))},d0=new WeakSet,yW=function(){return V(this,uU)?this.rotation:0},zN=new WeakSet,H2=function(){if(V(this,uU))return null;const[d,l]=this.pageDimensions,U=V(this,oF),Z=new Float32Array(U.length*8);let F=0;for(const{x:t,y:c,width:W,height:Q}of U){const a=t*d,n=(1-c-Q)*l;Z[F]=Z[F+4]=a,Z[F+1]=Z[F+3]=n,Z[F+2]=Z[F+6]=a+W*d,Z[F+5]=Z[F+7]=n+Q*l,F+=8}return Z},DN=new WeakSet,P2=function(d){return V(this,ld).serialize(d,b(this,d0,yW).call(this))},IN=new WeakSet,f2=function(d,l){this._freeHighlight.add(l)&&d.drawLayer.updatePath(this._freeHighlightId,this._freeHighlight)},EN=new WeakSet,A2=function(d,l){this._freeHighlight.isEmpty()?d.drawLayer.removeFreeHighlight(this._freeHighlightId):d.createAndAddNewEditor(l,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},i(vl,yF),i(vl,IN),i(vl,EN),f(vl,"_defaultColor",null),f(vl,"_defaultOpacity",1),f(vl,"_defaultThickness",12),f(vl,"_l10nPromise"),f(vl,"_type","highlight"),f(vl,"_editorType",ll.HIGHLIGHT),f(vl,"_freeHighlightId",-1),f(vl,"_freeHighlight",null),f(vl,"_freeHighlightClipId","");let Sm=vl;var Z0,F0,za,Da,Ia,m0,Dd,tZ,CU,pt,t0,XZ,c0,W0,VF,wN,_2,CN,q2,xN,$2,rN,lM,Ea,ki,jN,UM,Qs,ON,gN,Xm,KN,Ym,vN,pm,HN,Bm,PN,um,YZ,TF,wa,fN,kW,as,LW,ns,kF,e0,Ca,AN,Pc,nQ,_N,dM,sQ,Li,qN,ZM,$N,FM,ss,lh,fc,iQ,M0,zW;const WU=class zU extends Vl{constructor(l){super(jU(Nl({},l),{name:"inkEditor"})),i(this,wN),i(this,CN),i(this,xN),i(this,rN),i(this,Ea),i(this,jN),i(this,Qs),i(this,gN),i(this,KN),i(this,vN),i(this,HN),i(this,PN),i(this,YZ),i(this,wa),i(this,kW),i(this,LW),i(this,kF),i(this,Ca),i(this,Pc),i(this,$N),i(this,ss),i(this,fc),i(this,M0),i(this,Z0,0),i(this,F0,0),i(this,za,this.canvasPointermove.bind(this)),i(this,Da,this.canvasPointerleave.bind(this)),i(this,Ia,this.canvasPointerup.bind(this)),i(this,m0,this.canvasPointerdown.bind(this)),i(this,Dd,null),i(this,tZ,new Path2D),i(this,CU,!1),i(this,pt,!1),i(this,t0,!1),i(this,XZ,null),i(this,c0,0),i(this,W0,0),i(this,VF,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){Vl.initialize(l,U)}static updateDefaultParams(l,U){switch(l){case P.INK_THICKNESS:zU._defaultThickness=U;break;case P.INK_COLOR:zU._defaultColor=U;break;case P.INK_OPACITY:zU._defaultOpacity=U/100;break}}updateParams(l,U){switch(l){case P.INK_THICKNESS:b(this,wN,_2).call(this,U);break;case P.INK_COLOR:b(this,CN,q2).call(this,U);break;case P.INK_OPACITY:b(this,xN,$2).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[P.INK_THICKNESS,zU._defaultThickness],[P.INK_COLOR,zU._defaultColor||Vl._defaultLineColor],[P.INK_OPACITY,Math.round(zU._defaultOpacity*100)]]}get propertiesToUpdate(){var l;return[[P.INK_THICKNESS,this.thickness||zU._defaultThickness],[P.INK_COLOR,this.color||zU._defaultColor||Vl._defaultLineColor],[P.INK_OPACITY,Math.round(100*((l=this.opacity)!=null?l:zU._defaultOpacity))]]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.canvas||(b(this,kW,as).call(this),b(this,LW,ns).call(this)),this.isAttachedToDOM||(this.parent.add(this),b(this,kF,e0).call(this)),b(this,M0,zW).call(this)))}remove(){var l;this.canvas!==null&&(this.isEmpty()||this.commit(),this.canvas.width=this.canvas.height=0,this.canvas.remove(),this.canvas=null,V(this,Dd)&&(clearTimeout(V(this,Dd)),m(this,Dd,null)),(l=V(this,XZ))==null||l.disconnect(),m(this,XZ,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,F=this.height*U;this.setDimensions(Z,F)}enableEditMode(){V(this,CU)||this.canvas===null||(super.enableEditMode(),this._isDraggable=!1,this.canvas.addEventListener("pointerdown",V(this,m0),{signal:this._uiManager._signal}))}disableEditMode(){!this.isInEditMode()||this.canvas===null||(super.disableEditMode(),this._isDraggable=!this.isEmpty(),this.div.classList.remove("editing"),this.canvas.removeEventListener("pointerdown",V(this,m0)))}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return this.paths.length===0||this.paths.length===1&&this.paths[0].length===0}commit(){V(this,CU)||(super.commit(),this.isEditing=!1,this.disableEditMode(),this.setInForeground(),m(this,CU,!0),this.div.classList.add("disabled"),b(this,M0,zW).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()||V(this,CU)||(this.setInForeground(),l.preventDefault(),this.div.contains(document.activeElement)||this.div.focus({preventScroll:!0}),b(this,jN,UM).call(this,l.offsetX,l.offsetY))}canvasPointermove(l){l.preventDefault(),b(this,Qs,ON).call(this,l.offsetX,l.offsetY)}canvasPointerup(l){l.preventDefault(),b(this,wa,fN).call(this,l)}canvasPointerleave(l){b(this,wa,fN).call(this,l)}get isResizable(){return!this.isEmpty()&&V(this,CU)}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,F,t,c]=b(this,rN,lM).call(this);if(this.setAt(Z,F,0,0),this.setDims(t,c),b(this,kW,as).call(this),this.width){const[W,Q]=this.parentDimensions;this.setAspectRatio(this.width*W,this.height*Q),this.setAt(l*W,U*Q,this.width*W,this.height*Q),m(this,t0,!0),b(this,kF,e0).call(this),this.setDims(this.width*W,this.height*Q),b(this,YZ,TF).call(this),this.div.classList.add("disabled")}else this.div.classList.add("editing"),this.enableEditMode();return b(this,LW,ns).call(this),this.div}setDimensions(l,U){const Z=Math.round(l),F=Math.round(U);if(V(this,c0)===Z&&V(this,W0)===F)return;m(this,c0,Z),m(this,W0,F),this.canvas.style.visibility="hidden";const[t,c]=this.parentDimensions;this.width=l/t,this.height=U/c,this.fixAndSetPosition(),V(this,CU)&&b(this,Ca,AN).call(this,l,U),b(this,kF,e0).call(this),b(this,YZ,TF).call(this),this.canvas.style.visibility="visible",this.fixDims()}static deserialize(l,U,Z){var F,t,c;if(l instanceof L2)return null;const W=super.deserialize(l,U,Z);W.thickness=l.thickness,W.color=j.makeHexColor(...l.color),W.opacity=l.opacity;const[Q,a]=W.pageDimensions,n=W.width*Q,s=W.height*a,R=W.parentScale,N=l.thickness/2;m(W,CU,!0),m(W,c0,Math.round(n)),m(W,W0,Math.round(s));const{paths:h,rect:e,rotation:M}=l;for(let{bezier:T}of h){T=b(F=zU,qN,ZM).call(F,T,e,M);const G=[];W.paths.push(G);let Y=R*(T[0]-N),S=R*(T[1]-N);for(let B=2,k=T.length;B<k;B+=6){const p=R*(T[B]-N),o=R*(T[B+1]-N),y=R*(T[B+2]-N),I=R*(T[B+3]-N),E=R*(T[B+4]-N),O=R*(T[B+5]-N);G.push([[Y,S],[p,o],[y,I],[E,O]]),Y=E,S=O}const X=b(this,_N,dM).call(this,G);W.bezierPath2D.push(X)}const J=b(t=W,ss,lh).call(t);return m(W,F0,Math.max(Vl.MIN_SIZE,J[2]-J[0])),m(W,Z0,Math.max(Vl.MIN_SIZE,J[3]-J[1])),b(c=W,Ca,AN).call(c,n,s),W}serialize(){if(this.isEmpty())return null;const l=this.getRect(0,0),U=Vl._colorManager.convert(this.ctx.strokeStyle);return{annotationType:ll.INK,color:U,thickness:this.thickness,opacity:this.opacity,paths:b(this,$N,FM).call(this,this.scaleFactor/this.parentScale,this.translationX,this.translationY,l),pageIndex:this.pageIndex,rect:l,rotation:this.rotation,structTreeParentId:this._structTreeParentId}}};Z0=new WeakMap,F0=new WeakMap,za=new WeakMap,Da=new WeakMap,Ia=new WeakMap,m0=new WeakMap,Dd=new WeakMap,tZ=new WeakMap,CU=new WeakMap,pt=new WeakMap,t0=new WeakMap,XZ=new WeakMap,c0=new WeakMap,W0=new WeakMap,VF=new WeakMap,wN=new WeakSet,_2=function(d){const l=Z=>{this.thickness=Z,b(this,M0,zW).call(this)},U=this.thickness;this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})},CN=new WeakSet,q2=function(d){const l=Z=>{this.color=Z,b(this,YZ,TF).call(this)},U=this.color;this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})},xN=new WeakSet,$2=function(d){const l=Z=>{this.opacity=Z,b(this,YZ,TF).call(this)};d/=100;const U=this.opacity;this.addCommands({cmd:l.bind(this,d),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:P.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})},rN=new WeakSet,lM=function(){const{parentRotation:d,parentDimensions:[l,U]}=this;switch(d){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]}},Ea=new WeakSet,ki=function(){const{ctx:d,color:l,opacity:U,thickness:Z,parentScale:F,scaleFactor:t}=this;d.lineWidth=Z*F/t,d.lineCap="round",d.lineJoin="round",d.miterLimit=10,d.strokeStyle=`${l}${DJ(U)}`},jN=new WeakSet,UM=function(d,l){var Z;const U=this._uiManager._signal;this.canvas.addEventListener("contextmenu",iU,{signal:U}),this.canvas.addEventListener("pointerleave",V(this,Da),{signal:U}),this.canvas.addEventListener("pointermove",V(this,za),{signal:U}),this.canvas.addEventListener("pointerup",V(this,Ia),{signal:U}),this.canvas.removeEventListener("pointerdown",V(this,m0)),this.isEditing=!0,V(this,t0)||(m(this,t0,!0),b(this,kF,e0).call(this),this.thickness||(this.thickness=WU._defaultThickness),this.color||(this.color=WU._defaultColor||Vl._defaultLineColor),(Z=this.opacity)!=null||(this.opacity=WU._defaultOpacity)),this.currentPath.push([d,l]),m(this,pt,!1),b(this,Ea,ki).call(this),m(this,VF,()=>{b(this,vN,pm).call(this),V(this,VF)&&window.requestAnimationFrame(V(this,VF))}),window.requestAnimationFrame(V(this,VF))},Qs=new WeakSet,ON=function(d,l){const[U,Z]=this.currentPath.at(-1);if(this.currentPath.length>1&&d===U&&l===Z)return;const F=this.currentPath;let t=V(this,tZ);if(F.push([d,l]),m(this,pt,!0),F.length<=2){t.moveTo(...F[0]),t.lineTo(d,l);return}F.length===3&&(m(this,tZ,t=new Path2D),t.moveTo(...F[0])),b(this,HN,Bm).call(this,t,...F.at(-3),...F.at(-2),d,l)},gN=new WeakSet,Xm=function(){if(this.currentPath.length===0)return;const d=this.currentPath.at(-1);V(this,tZ).lineTo(...d)},KN=new WeakSet,Ym=function(d,l){m(this,VF,null),d=Math.min(Math.max(d,0),this.canvas.width),l=Math.min(Math.max(l,0),this.canvas.height),b(this,Qs,ON).call(this,d,l),b(this,gN,Xm).call(this);let U;if(this.currentPath.length!==1)U=b(this,PN,um).call(this);else{const W=[d,l];U=[[W,W.slice(),W.slice(),W]]}const Z=V(this,tZ),F=this.currentPath;this.currentPath=[],m(this,tZ,new Path2D);const t=()=>{this.allRawPaths.push(F),this.paths.push(U),this.bezierPath2D.push(Z),this._uiManager.rebuild(this)},c=()=>{this.allRawPaths.pop(),this.paths.pop(),this.bezierPath2D.pop(),this.paths.length===0?this.remove():(this.canvas||(b(this,kW,as).call(this),b(this,LW,ns).call(this)),b(this,M0,zW).call(this))};this.addCommands({cmd:t,undo:c,mustExec:!0})},vN=new WeakSet,pm=function(){if(!V(this,pt))return;m(this,pt,!1);const d=Math.ceil(this.thickness*this.parentScale),l=this.currentPath.slice(-3),U=l.map(t=>t[0]),Z=l.map(t=>t[1]);Math.min(...U)-d,Math.max(...U)+d,Math.min(...Z)-d,Math.max(...Z)+d;const{ctx:F}=this;F.save(),F.clearRect(0,0,this.canvas.width,this.canvas.height);for(const t of this.bezierPath2D)F.stroke(t);F.stroke(V(this,tZ)),F.restore()},HN=new WeakSet,Bm=function(d,l,U,Z,F,t,c){const W=(l+Z)/2,Q=(U+F)/2,a=(Z+t)/2,n=(F+c)/2;d.bezierCurveTo(W+2*(Z-W)/3,Q+2*(F-Q)/3,a+2*(Z-a)/3,n+2*(F-n)/3,a,n)},PN=new WeakSet,um=function(){const d=this.currentPath;if(d.length<=2)return[[d[0],d[0],d.at(-1),d.at(-1)]];const l=[];let U,[Z,F]=d[0];for(U=1;U<d.length-2;U++){const[s,R]=d[U],[N,h]=d[U+1],e=(s+N)/2,M=(R+h)/2,J=[Z+2*(s-Z)/3,F+2*(R-F)/3],T=[e+2*(s-e)/3,M+2*(R-M)/3];l.push([[Z,F],J,T,[e,M]]),[Z,F]=[e,M]}const[t,c]=d[U],[W,Q]=d[U+1],a=[Z+2*(t-Z)/3,F+2*(c-F)/3],n=[W+2*(t-W)/3,Q+2*(c-Q)/3];return l.push([[Z,F],a,n,[W,Q]]),l},YZ=new WeakSet,TF=function(){if(this.isEmpty()){b(this,Pc,nQ).call(this);return}b(this,Ea,ki).call(this);const{canvas:d,ctx:l}=this;l.setTransform(1,0,0,1,0,0),l.clearRect(0,0,d.width,d.height),b(this,Pc,nQ).call(this);for(const U of this.bezierPath2D)l.stroke(U)},wa=new WeakSet,fN=function(d){this.canvas.removeEventListener("pointerleave",V(this,Da)),this.canvas.removeEventListener("pointermove",V(this,za)),this.canvas.removeEventListener("pointerup",V(this,Ia)),this.canvas.addEventListener("pointerdown",V(this,m0),{signal:this._uiManager._signal}),V(this,Dd)&&clearTimeout(V(this,Dd)),m(this,Dd,setTimeout(()=>{m(this,Dd,null),this.canvas.removeEventListener("contextmenu",iU)},10)),b(this,KN,Ym).call(this,d.offsetX,d.offsetY),this.addToAnnotationStorage(),this.setInBackground()},kW=new WeakSet,as=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")},LW=new WeakSet,ns=function(){m(this,XZ,new ResizeObserver(d=>{const l=d[0].contentRect;l.width&&l.height&&this.setDimensions(l.width,l.height)})),V(this,XZ).observe(this.div),this._uiManager._signal.addEventListener("abort",()=>{var d;(d=V(this,XZ))==null||d.disconnect(),m(this,XZ,null)},{once:!0})},kF=new WeakSet,e0=function(){if(!V(this,t0))return;const[d,l]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*d),this.canvas.height=Math.ceil(this.height*l),b(this,Pc,nQ).call(this)},Ca=new WeakSet,AN=function(d,l){const U=b(this,fc,iQ).call(this),Z=(d-U)/V(this,F0),F=(l-U)/V(this,Z0);this.scaleFactor=Math.min(Z,F)},Pc=new WeakSet,nQ=function(){const d=b(this,fc,iQ).call(this)/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+d,this.translationY*this.scaleFactor+d)},_N=new WeakSet,dM=function(d){const l=new Path2D;for(let U=0,Z=d.length;U<Z;U++){const[F,t,c,W]=d[U];U===0&&l.moveTo(...F),l.bezierCurveTo(t[0],t[1],c[0],c[1],W[0],W[1])}return l},sQ=new WeakSet,Li=function(d,l,U){const[Z,F,t,c]=l;switch(U){case 0:for(let W=0,Q=d.length;W<Q;W+=2)d[W]+=Z,d[W+1]=c-d[W+1];break;case 90:for(let W=0,Q=d.length;W<Q;W+=2){const a=d[W];d[W]=d[W+1]+Z,d[W+1]=a+F}break;case 180:for(let W=0,Q=d.length;W<Q;W+=2)d[W]=t-d[W],d[W+1]+=F;break;case 270:for(let W=0,Q=d.length;W<Q;W+=2){const a=d[W];d[W]=t-d[W+1],d[W+1]=c-a}break;default:throw new Error("Invalid rotation")}return d},qN=new WeakSet,ZM=function(d,l,U){const[Z,F,t,c]=l;switch(U){case 0:for(let W=0,Q=d.length;W<Q;W+=2)d[W]-=Z,d[W+1]=c-d[W+1];break;case 90:for(let W=0,Q=d.length;W<Q;W+=2){const a=d[W];d[W]=d[W+1]-F,d[W+1]=a-Z}break;case 180:for(let W=0,Q=d.length;W<Q;W+=2)d[W]=t-d[W],d[W+1]-=F;break;case 270:for(let W=0,Q=d.length;W<Q;W+=2){const a=d[W];d[W]=c-d[W+1],d[W+1]=t-a}break;default:throw new Error("Invalid rotation")}return d},$N=new WeakSet,FM=function(d,l,U,Z){var F,t;const c=[],W=this.thickness/2,Q=d*l+W,a=d*U+W;for(const n of this.paths){const s=[],R=[];for(let N=0,h=n.length;N<h;N++){const[e,M,J,T]=n[N];if(e[0]===T[0]&&e[1]===T[1]&&h===1){const y=d*e[0]+Q,I=d*e[1]+a;s.push(y,I),R.push(y,I);break}const G=d*e[0]+Q,Y=d*e[1]+a,S=d*M[0]+Q,X=d*M[1]+a,B=d*J[0]+Q,k=d*J[1]+a,p=d*T[0]+Q,o=d*T[1]+a;N===0&&(s.push(G,Y),R.push(G,Y)),s.push(S,X,B,k,p,o),R.push(S,X),N===h-1&&R.push(p,o)}c.push({bezier:b(F=WU,sQ,Li).call(F,s,Z,this.rotation),points:b(t=WU,sQ,Li).call(t,R,Z,this.rotation)})}return c},ss=new WeakSet,lh=function(){let d=1/0,l=-1/0,U=1/0,Z=-1/0;for(const F of this.paths)for(const[t,c,W,Q]of F){const a=j.bezierBoundingBox(...t,...c,...W,...Q);d=Math.min(d,a[0]),U=Math.min(U,a[1]),l=Math.max(l,a[2]),Z=Math.max(Z,a[3])}return[d,U,l,Z]},fc=new WeakSet,iQ=function(){return V(this,CU)?Math.ceil(this.thickness*this.parentScale):0},M0=new WeakSet,zW=function(d=!1){if(this.isEmpty())return;if(!V(this,CU)){b(this,YZ,TF).call(this);return}const l=b(this,ss,lh).call(this),U=b(this,fc,iQ).call(this);m(this,F0,Math.max(Vl.MIN_SIZE,l[2]-l[0])),m(this,Z0,Math.max(Vl.MIN_SIZE,l[3]-l[1]));const Z=Math.ceil(U+V(this,F0)*this.scaleFactor),F=Math.ceil(U+V(this,Z0)*this.scaleFactor),[t,c]=this.parentDimensions;this.width=Z/t,this.height=F/c,this.setAspectRatio(Z,F);const W=this.translationX,Q=this.translationY;this.translationX=-l[0],this.translationY=-l[1],b(this,kF,e0).call(this),b(this,YZ,TF).call(this),m(this,c0,Z),m(this,W0,F),this.setDims(Z,F);const a=d?U/this.scaleFactor/2:0;this.translate(W-this.translationX-a,Q-this.translationY-a)},i(WU,_N),i(WU,sQ),i(WU,qN),f(WU,"_defaultColor",null),f(WU,"_defaultOpacity",1),f(WU,"_defaultThickness",1),f(WU,"_type","ink"),f(WU,"_editorType",ll.INK);let MT=WU;var Hl,Pl,SF,kZ,LF,Ac,Id,pZ,Ed,Fd,xa,Bt,dc,ut,Zc,_c,ra,is,Uh,dh,om,Zh,ym,ja,zi,qc,Oa,Fh,km;const ga=class extends Vl{constructor(l){super(jU(Nl({},l),{name:"stampEditor"})),i(this,Bt),i(this,ut),i(this,_c),i(this,is),i(this,dh),i(this,Zh),i(this,ja),i(this,qc),i(this,Fh),i(this,Hl,null),i(this,Pl,null),i(this,SF,null),i(this,kZ,null),i(this,LF,null),i(this,Ac,""),i(this,Id,null),i(this,pZ,null),i(this,Ed,null),i(this,Fd,!1),i(this,xa,!1),m(this,kZ,l.bitmapUrl),m(this,LF,l.bitmapFile)}static initialize(l,U){Vl.initialize(l,U)}static get supportedTypes(){return Ul(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map(l=>`image/${l}`))}static get supportedTypesStr(){return Ul(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(l){return this.supportedTypes.includes(l)}static paste(l,U){U.pasteEditor(ll.STAMP,{bitmapFile:l.getAsFile()})}remove(){var l,U;V(this,Pl)&&(m(this,Hl,null),this._uiManager.imageManager.deleteId(V(this,Pl)),(l=V(this,Id))==null||l.remove(),m(this,Id,null),(U=V(this,pZ))==null||U.disconnect(),m(this,pZ,null),V(this,Ed)&&(clearTimeout(V(this,Ed)),m(this,Ed,null))),super.remove()}rebuild(){if(!this.parent){V(this,Pl)&&b(this,_c,ra).call(this);return}super.rebuild(),this.div!==null&&(V(this,Pl)&&V(this,Id)===null&&b(this,_c,ra).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(){this._isDraggable=!0,this.div.focus()}isEmpty(){return!(V(this,SF)||V(this,Hl)||V(this,kZ)||V(this,LF)||V(this,Pl))}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(),V(this,Hl)?b(this,is,Uh).call(this):b(this,_c,ra).call(this),this.width){const[Z,F]=this.parentDimensions;this.setAt(l*Z,U*F,this.width*Z,this.height*F)}return this.div}getImageForAltText(){return V(this,Id)}static deserialize(l,U,Z){if(l instanceof z2)return null;const F=super.deserialize(l,U,Z),{rect:t,bitmapUrl:c,bitmapId:W,isSvg:Q,accessibilityData:a}=l;W&&Z.imageManager.isValidId(W)?m(F,Pl,W):m(F,kZ,c),m(F,Fd,Q);const[n,s]=F.pageDimensions;return F.width=(t[2]-t[0])/n,F.height=(t[3]-t[1])/s,a&&(F.altTextData=a),F}serialize(l=!1,U=null){if(this.isEmpty())return null;const Z={annotationType:ll.STAMP,bitmapId:V(this,Pl),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:V(this,Fd),structTreeParentId:this._structTreeParentId};if(l)return Z.bitmapUrl=b(this,qc,Oa).call(this,!0),Z.accessibilityData=this.altTextData,Z;const{decorative:F,altText:t}=this.altTextData;if(!F&&t&&(Z.accessibilityData={type:"Figure",alt:t}),U===null)return Z;U.stamps||(U.stamps=new Map);const c=V(this,Fd)?(Z.rect[2]-Z.rect[0])*(Z.rect[3]-Z.rect[1]):null;if(!U.stamps.has(V(this,Pl)))U.stamps.set(V(this,Pl),{area:c,serialized:Z}),Z.bitmap=b(this,qc,Oa).call(this,!1);else if(V(this,Fd)){const W=U.stamps.get(V(this,Pl));c>W.area&&(W.area=c,W.serialized.bitmap.close(),W.serialized.bitmap=b(this,qc,Oa).call(this,!1))}return Z}};Hl=new WeakMap,Pl=new WeakMap,SF=new WeakMap,kZ=new WeakMap,LF=new WeakMap,Ac=new WeakMap,Id=new WeakMap,pZ=new WeakMap,Ed=new WeakMap,Fd=new WeakMap,xa=new WeakMap,Bt=new WeakSet,dc=function(d,l=!1){if(!d){this.remove();return}m(this,Hl,d.bitmap),l||(m(this,Pl,d.id),m(this,Fd,d.isSvg)),d.file&&m(this,Ac,d.file.name),b(this,is,Uh).call(this)},ut=new WeakSet,Zc=function(){m(this,SF,null),this._uiManager.enableWaiting(!1),V(this,Id)&&this.div.focus()},_c=new WeakSet,ra=function(){if(V(this,Pl)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(V(this,Pl)).then(U=>b(this,Bt,dc).call(this,U,!0)).finally(()=>b(this,ut,Zc).call(this));return}if(V(this,kZ)){const U=V(this,kZ);m(this,kZ,null),this._uiManager.enableWaiting(!0),m(this,SF,this._uiManager.imageManager.getFromUrl(U).then(Z=>b(this,Bt,dc).call(this,Z)).finally(()=>b(this,ut,Zc).call(this)));return}if(V(this,LF)){const U=V(this,LF);m(this,LF,null),this._uiManager.enableWaiting(!0),m(this,SF,this._uiManager.imageManager.getFromFile(U).then(Z=>b(this,Bt,dc).call(this,Z)).finally(()=>b(this,ut,Zc).call(this)));return}const d=document.createElement("input");d.type="file",d.accept=ga.supportedTypesStr;const l=this._uiManager._signal;m(this,SF,new Promise(U=>{d.addEventListener("change",()=>D(this,null,function*(){if(!d.files||d.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const Z=yield this._uiManager.imageManager.getFromFile(d.files[0]);b(this,Bt,dc).call(this,Z)}U()}),{signal:l}),d.addEventListener("cancel",()=>{this.remove(),U()},{signal:l})}).finally(()=>b(this,ut,Zc).call(this))),d.click()},is=new WeakSet,Uh=function(){const{div:d}=this;let{width:l,height:U}=V(this,Hl);const[Z,F]=this.pageDimensions,t=.75;if(this.width)l=this.width*Z,U=this.height*F;else if(l>t*Z||U>t*F){const a=Math.min(t*Z/l,t*F/U);l*=a,U*=a}const[c,W]=this.parentDimensions;this.setDims(l*c/Z,U*W/F),this._uiManager.enableWaiting(!1);const Q=m(this,Id,document.createElement("canvas"));d.append(Q),d.hidden=!1,b(this,ja,zi).call(this,l,U),b(this,Fh,km).call(this),V(this,xa)||(this.parent.addUndoableEditor(this),m(this,xa,!0)),this._reportTelemetry({action:"inserted_image"}),V(this,Ac)&&Q.setAttribute("aria-label",V(this,Ac))},dh=new WeakSet,om=function(d,l){var U;const[Z,F]=this.parentDimensions;this.width=d/Z,this.height=l/F,this.setDims(d,l),(U=this._initialOptions)!=null&&U.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,V(this,Ed)!==null&&clearTimeout(V(this,Ed)),m(this,Ed,setTimeout(()=>{m(this,Ed,null),b(this,ja,zi).call(this,d,l)},200))},Zh=new WeakSet,ym=function(d,l){const{width:U,height:Z}=V(this,Hl);let F=U,t=Z,c=V(this,Hl);for(;F>2*d||t>2*l;){const W=F,Q=t;F>2*d&&(F=F>=16384?Math.floor(F/2)-1:Math.ceil(F/2)),t>2*l&&(t=t>=16384?Math.floor(t/2)-1:Math.ceil(t/2));const a=new OffscreenCanvas(F,t);a.getContext("2d").drawImage(c,0,0,W,Q,0,0,F,t),c=a.transferToImageBitmap()}return c},ja=new WeakSet,zi=function(d,l){d=Math.ceil(d),l=Math.ceil(l);const U=V(this,Id);if(!U||U.width===d&&U.height===l)return;U.width=d,U.height=l;const Z=V(this,Fd)?V(this,Hl):b(this,Zh,ym).call(this,d,l);if(this._uiManager.hasMLManager&&!this.hasAltText()){const t=new OffscreenCanvas(d,l).getContext("2d");t.drawImage(Z,0,0,Z.width,Z.height,0,0,d,l),this._uiManager.mlGuess({service:"image-to-text",request:{data:t.getImageData(0,0,d,l).data,width:d,height:l,channels:4}}).then(c=>{const W=(c==null?void 0:c.output)||"";this.parent&&W&&!this.hasAltText()&&(this.altTextData={altText:W,decorative:!1})})}const F=U.getContext("2d");F.filter=this._uiManager.hcmFilter,F.drawImage(Z,0,0,Z.width,Z.height,0,0,d,l)},qc=new WeakSet,Oa=function(d){if(d){if(V(this,Fd)){const U=this._uiManager.imageManager.getSvgUrl(V(this,Pl));if(U)return U}const l=document.createElement("canvas");return{width:l.width,height:l.height}=V(this,Hl),l.getContext("2d").drawImage(V(this,Hl),0,0),l.toDataURL()}if(V(this,Fd)){const[l,U]=this.pageDimensions,Z=Math.round(this.width*l*Y0.PDF_TO_CSS_UNITS),F=Math.round(this.height*U*Y0.PDF_TO_CSS_UNITS),t=new OffscreenCanvas(Z,F);return t.getContext("2d").drawImage(V(this,Hl),0,0,V(this,Hl).width,V(this,Hl).height,0,0,Z,F),t.transferToImageBitmap()}return structuredClone(V(this,Hl))},Fh=new WeakSet,km=function(){this._uiManager._signal&&(m(this,pZ,new ResizeObserver(d=>{const l=d[0].contentRect;l.width&&l.height&&b(this,dh,om).call(this,l.width,l.height)})),V(this,pZ).observe(this.div),this._uiManager._signal.addEventListener("abort",()=>{var d;(d=V(this,pZ))==null||d.disconnect(),m(this,pZ,null)},{once:!0}))},f(ga,"_type","stamp"),f(ga,"_editorType",ll.STAMP);let JT=ga;var Zt,Fc,bd,Ft,qd,$d,lZ,JU,HZ,tc,cc,cU,g,yU,PZ,Di,Lm,RQ,Ii,NQ,Ei,hQ,wi,Wc,bQ;let GT=(yU=class{constructor({uiManager:d,pageIndex:l,div:U,accessibilityManager:Z,annotationLayer:F,drawLayer:t,textLayer:c,viewport:W,l10n:Q}){i(this,Di),i(this,RQ),i(this,NQ),i(this,hQ),i(this,Wc),i(this,Zt,void 0),i(this,Fc,!1),i(this,bd,null),i(this,Ft,null),i(this,qd,null),i(this,$d,null),i(this,lZ,null),i(this,JU,new Map),i(this,HZ,!1),i(this,tc,!1),i(this,cc,!1),i(this,cU,null),i(this,g,void 0);const a=[...V(yU,PZ).values()];if(!yU._initialized){yU._initialized=!0;for(const n of a)n.initialize(Q,d)}d.registerEditorTypes(a),m(this,g,d),this.pageIndex=l,this.div=U,m(this,Zt,Z),m(this,bd,F),this.viewport=W,m(this,cU,c),this.drawLayer=t,V(this,g).addLayer(this)}get isEmpty(){return V(this,JU).size===0}get isInvisible(){return this.isEmpty&&V(this,g).getMode()===ll.NONE}updateToolbar(d){V(this,g).updateToolbar(d)}updateMode(d=V(this,g).getMode()){switch(b(this,Wc,bQ).call(this),d){case ll.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case ll.INK:this.addInkEditorIfNeeded(!1),this.disableTextSelection(),this.togglePointerEvents(!0),this.disableClick();break;case ll.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:l}=this.div;for(const U of V(yU,PZ).values())l.toggle(`${U._type}Editing`,d===U._editorType);this.div.hidden=!1}hasTextLayer(d){var l;return d===((l=V(this,cU))==null?void 0:l.div)}addInkEditorIfNeeded(d){if(V(this,g).getMode()===ll.INK){if(!d){for(const l of V(this,JU).values())if(l.isEmpty()){l.setInBackground();return}}this.createAndAddNewEditor({offsetX:0,offsetY:0},!1).setInBackground()}}setEditingState(d){V(this,g).setEditingState(d)}addCommands(d){V(this,g).addCommands(d)}togglePointerEvents(d=!1){this.div.classList.toggle("disabled",!d)}toggleAnnotationLayerPointerEvents(d=!1){var l;(l=V(this,bd))==null||l.div.classList.toggle("disabled",!d)}enable(){this.div.tabIndex=0,this.togglePointerEvents(!0);const d=new Set;for(const U of V(this,JU).values())U.enableEditing(),U.show(!0),U.annotationElementId&&(V(this,g).removeChangedExistingAnnotation(U),d.add(U.annotationElementId));if(!V(this,bd))return;const l=V(this,bd).getEditableAnnotations();for(const U of l){if(U.hide(),V(this,g).isDeletedAnnotationElement(U.data.id)||d.has(U.data.id))continue;const Z=this.deserialize(U);Z&&(this.addOrRebuild(Z),Z.enableEditing())}}disable(){var d;m(this,cc,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const l=new Map,U=new Map;for(const F of V(this,JU).values())if(F.disableEditing(),!!F.annotationElementId){if(F.serialize()!==null){l.set(F.annotationElementId,F);continue}else U.set(F.annotationElementId,F);(d=this.getEditableAnnotation(F.annotationElementId))==null||d.show(),F.remove()}if(V(this,bd)){const F=V(this,bd).getEditableAnnotations();for(const t of F){const{id:c}=t.data;if(V(this,g).isDeletedAnnotationElement(c))continue;let W=U.get(c);if(W){W.resetAnnotationElement(t),W.show(!1),t.show();continue}W=l.get(c),W&&(V(this,g).addChangedExistingAnnotation(W),W.renderAnnotationElement(t),W.show(!1)),t.show()}}b(this,Wc,bQ).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:Z}=this.div;for(const F of V(yU,PZ).values())Z.remove(`${F._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),m(this,cc,!1)}getEditableAnnotation(d){var l;return((l=V(this,bd))==null?void 0:l.getEditableAnnotation(d))||null}setActiveEditor(d){V(this,g).getActive()!==d&&V(this,g).setActiveEditor(d)}enableTextSelection(){var d;this.div.tabIndex=-1,(d=V(this,cU))!=null&&d.div&&!V(this,$d)&&(m(this,$d,b(this,Di,Lm).bind(this)),V(this,cU).div.addEventListener("pointerdown",V(this,$d),{signal:V(this,g)._signal}),V(this,cU).div.classList.add("highlighting"))}disableTextSelection(){var d;this.div.tabIndex=0,(d=V(this,cU))!=null&&d.div&&V(this,$d)&&(V(this,cU).div.removeEventListener("pointerdown",V(this,$d)),m(this,$d,null),V(this,cU).div.classList.remove("highlighting"))}enableClick(){if(V(this,qd))return;const d=V(this,g)._signal;m(this,qd,this.pointerdown.bind(this)),m(this,Ft,this.pointerup.bind(this)),this.div.addEventListener("pointerdown",V(this,qd),{signal:d}),this.div.addEventListener("pointerup",V(this,Ft),{signal:d})}disableClick(){V(this,qd)&&(this.div.removeEventListener("pointerdown",V(this,qd)),this.div.removeEventListener("pointerup",V(this,Ft)),m(this,qd,null),m(this,Ft,null))}attach(d){V(this,JU).set(d.id,d);const{annotationElementId:l}=d;l&&V(this,g).isDeletedAnnotationElement(l)&&V(this,g).removeDeletedAnnotationElement(d)}detach(d){var l;V(this,JU).delete(d.id),(l=V(this,Zt))==null||l.removePointerInTextLayer(d.contentDiv),!V(this,cc)&&d.annotationElementId&&V(this,g).addDeletedAnnotationElement(d)}remove(d){this.detach(d),V(this,g).removeEditor(d),d.div.remove(),d.isAttachedToDOM=!1,V(this,tc)||this.addInkEditorIfNeeded(!1)}changeParent(d){var l;d.parent!==this&&(d.parent&&d.annotationElementId&&(V(this,g).addDeletedAnnotationElement(d.annotationElementId),Vl.deleteAnnotationElement(d),d.annotationElementId=null),this.attach(d),(l=d.parent)==null||l.detach(d),d.setParent(this),d.div&&d.isAttachedToDOM&&(d.div.remove(),this.div.append(d.div)))}add(d){if(!(d.parent===this&&d.isAttachedToDOM)){if(this.changeParent(d),V(this,g).addEditor(d),this.attach(d),!d.isAttachedToDOM){const l=d.render();this.div.append(l),d.isAttachedToDOM=!0}d.fixAndSetPosition(),d.onceAdded(),V(this,g).addToAnnotationStorage(d),d._reportTelemetry(d.telemetryInitialData)}}moveEditorInDOM(d){var l;if(!d.isAttachedToDOM)return;const{activeElement:U}=document;d.div.contains(U)&&!V(this,lZ)&&(d._focusEventsAllowed=!1,m(this,lZ,setTimeout(()=>{m(this,lZ,null),d.div.contains(document.activeElement)?d._focusEventsAllowed=!0:(d.div.addEventListener("focusin",()=>{d._focusEventsAllowed=!0},{once:!0,signal:V(this,g)._signal}),U.focus())},0))),d._structTreeParentId=(l=V(this,Zt))==null?void 0:l.moveElementInDOM(this.div,d.div,d.contentDiv,!0)}addOrRebuild(d){d.needsToBeRebuilt()?(d.parent||(d.parent=this),d.rebuild(),d.show()):this.add(d)}addUndoableEditor(d){const l=()=>d._uiManager.rebuild(d),U=()=>{d.remove()};this.addCommands({cmd:l,undo:U,mustExec:!1})}getNextId(){return V(this,g).getId()}get _signal(){return V(this,g)._signal}canCreateNewEmptyEditor(){var d;return(d=V(this,RQ,Ii))==null?void 0:d.canCreateNewEmptyEditor()}pasteEditor(d,l){V(this,g).updateToolbar(d),V(this,g).updateMode(d);const{offsetX:U,offsetY:Z}=b(this,hQ,wi).call(this),F=this.getNextId(),t=b(this,NQ,Ei).call(this,Nl({parent:this,id:F,x:U,y:Z,uiManager:V(this,g),isCentered:!0},l));t&&this.add(t)}deserialize(d){var U;var l;return((l=V(yU,PZ).get((U=d.annotationType)!=null?U:d.annotationEditorType))==null?void 0:l.deserialize(d,this,V(this,g)))||null}createAndAddNewEditor(d,l,U={}){const Z=this.getNextId(),F=b(this,NQ,Ei).call(this,Nl({parent:this,id:Z,x:d.offsetX,y:d.offsetY,uiManager:V(this,g),isCentered:l},U));return F&&this.add(F),F}addNewEditor(){this.createAndAddNewEditor(b(this,hQ,wi).call(this),!0)}setSelected(d){V(this,g).setSelected(d)}toggleSelected(d){V(this,g).toggleSelected(d)}isSelected(d){return V(this,g).isSelected(d)}unselect(d){V(this,g).unselect(d)}pointerup(d){const{isMac:l}=sU.platform;if(!(d.button!==0||d.ctrlKey&&l)&&d.target===this.div&&V(this,HZ)){if(m(this,HZ,!1),!V(this,Fc)){m(this,Fc,!0);return}if(V(this,g).getMode()===ll.STAMP){V(this,g).unselectAll();return}this.createAndAddNewEditor(d,!1)}}pointerdown(d){if(V(this,g).getMode()===ll.HIGHLIGHT&&this.enableTextSelection(),V(this,HZ)){m(this,HZ,!1);return}const{isMac:l}=sU.platform;if(d.button!==0||d.ctrlKey&&l||d.target!==this.div)return;m(this,HZ,!0);const U=V(this,g).getActive();m(this,Fc,!U||U.isEmpty())}findNewParent(d,l,U){const Z=V(this,g).findParent(l,U);return Z===null||Z===this?!1:(Z.changeParent(d),!0)}destroy(){var d,l;((d=V(this,g).getActive())==null?void 0:d.parent)===this&&(V(this,g).commitOrRemove(),V(this,g).setActiveEditor(null)),V(this,lZ)&&(clearTimeout(V(this,lZ)),m(this,lZ,null));for(const U of V(this,JU).values())(l=V(this,Zt))==null||l.removePointerInTextLayer(U.contentDiv),U.setParent(null),U.isAttachedToDOM=!1,U.div.remove();this.div=null,V(this,JU).clear(),V(this,g).removeLayer(this)}render({viewport:d}){this.viewport=d,IF(this.div,d);for(const l of V(this,g).getEditors(this.pageIndex))this.add(l),l.rebuild();this.updateMode()}update({viewport:d}){V(this,g).commitOrRemove(),b(this,Wc,bQ).call(this);const l=this.viewport.rotation,U=d.rotation;if(this.viewport=d,IF(this.div,{rotation:U}),l!==U)for(const Z of V(this,JU).values())Z.rotate(U);this.addInkEditorIfNeeded(!1)}get pageDimensions(){const{pageWidth:d,pageHeight:l}=this.viewport.rawDims;return[d,l]}get scale(){return V(this,g).viewParameters.realScale}},Zt=new WeakMap,Fc=new WeakMap,bd=new WeakMap,Ft=new WeakMap,qd=new WeakMap,$d=new WeakMap,lZ=new WeakMap,JU=new WeakMap,HZ=new WeakMap,tc=new WeakMap,cc=new WeakMap,cU=new WeakMap,g=new WeakMap,PZ=new WeakMap,Di=new WeakSet,Lm=function(d){if(V(this,g).unselectAll(),d.target===V(this,cU).div){const{isMac:l}=sU.platform;if(d.button!==0||d.ctrlKey&&l)return;V(this,g).showAllEditors("highlight",!0,!0),V(this,cU).div.classList.add("free"),Sm.startHighlighting(this,V(this,g).direction==="ltr",d),V(this,cU).div.addEventListener("pointerup",()=>{V(this,cU).div.classList.remove("free")},{once:!0,signal:V(this,g)._signal}),d.preventDefault()}},RQ=new WeakSet,Ii=function(){return V(yU,PZ).get(V(this,g).getMode())},NQ=new WeakSet,Ei=function(d){const l=V(this,RQ,Ii);return l?new l.prototype.constructor(d):null},hQ=new WeakSet,wi=function(){const{x:d,y:l,width:U,height:Z}=this.div.getBoundingClientRect(),F=Math.max(0,d),t=Math.max(0,l),c=Math.min(window.innerWidth,d+U),W=Math.min(window.innerHeight,l+Z),Q=(F+c)/2-d,a=(t+W)/2-l,[n,s]=this.viewport.rotation%180===0?[Q,a]:[a,Q];return{offsetX:n,offsetY:s}},Wc=new WeakSet,bQ=function(){m(this,tc,!0);for(const d of V(this,JU).values())d.isEmpty()&&d.remove();m(this,tc,!1)},f(yU,"_initialized",!1),i(yU,PZ,new Map([mT,MT,JT,Sm].map(d=>[d._editorType,d]))),yU);var md,mQ,ol,fZ,eQ,Ll,Ci,MQ,xi,ri,zm;let TT=(Ll=class{constructor({pageIndex:d}){i(this,MQ),i(this,ri),i(this,md,null),i(this,mQ,0),i(this,ol,new Map),i(this,fZ,new Map),this.pageIndex=d}setParent(d){if(!V(this,md)){m(this,md,d);return}if(V(this,md)!==d){if(V(this,ol).size>0)for(const l of V(this,ol).values())l.remove(),d.append(l);m(this,md,d)}}static get _svgFactory(){return Ul(this,"_svgFactory",new Wb)}highlight(d,l,U,Z=!1){const F=bU(this,mQ)._++,t=b(this,MQ,xi).call(this,d.box);t.classList.add("highlight"),d.free&&t.classList.add("free");const c=Ll._svgFactory.createElement("defs");t.append(c);const W=Ll._svgFactory.createElement("path");c.append(W);const Q=`path_p${this.pageIndex}_${F}`;W.setAttribute("id",Q),W.setAttribute("d",d.toSVGPath()),Z&&V(this,fZ).set(F,W);const a=b(this,ri,zm).call(this,c,Q),n=Ll._svgFactory.createElement("use");return t.append(n),t.setAttribute("fill",l),t.setAttribute("fill-opacity",U),n.setAttribute("href",`#${Q}`),V(this,ol).set(F,t),{id:F,clipPathId:`url(#${a})`}}highlightOutline(d){const l=bU(this,mQ)._++,U=b(this,MQ,xi).call(this,d.box);U.classList.add("highlightOutline");const Z=Ll._svgFactory.createElement("defs");U.append(Z);const F=Ll._svgFactory.createElement("path");Z.append(F);const t=`path_p${this.pageIndex}_${l}`;F.setAttribute("id",t),F.setAttribute("d",d.toSVGPath()),F.setAttribute("vector-effect","non-scaling-stroke");let c;if(d.free){U.classList.add("free");const a=Ll._svgFactory.createElement("mask");Z.append(a),c=`mask_p${this.pageIndex}_${l}`,a.setAttribute("id",c),a.setAttribute("maskUnits","objectBoundingBox");const n=Ll._svgFactory.createElement("rect");a.append(n),n.setAttribute("width","1"),n.setAttribute("height","1"),n.setAttribute("fill","white");const s=Ll._svgFactory.createElement("use");a.append(s),s.setAttribute("href",`#${t}`),s.setAttribute("stroke","none"),s.setAttribute("fill","black"),s.setAttribute("fill-rule","nonzero"),s.classList.add("mask")}const W=Ll._svgFactory.createElement("use");U.append(W),W.setAttribute("href",`#${t}`),c&&W.setAttribute("mask",`url(#${c})`);const Q=W.cloneNode();return U.append(Q),W.classList.add("mainOutline"),Q.classList.add("secondaryOutline"),V(this,ol).set(l,U),l}finalizeLine(d,l){const U=V(this,fZ).get(d);V(this,fZ).delete(d),this.updateBox(d,l.box),U.setAttribute("d",l.toSVGPath())}updateLine(d,l){V(this,ol).get(d).firstChild.firstChild.setAttribute("d",l.toSVGPath())}removeFreeHighlight(d){this.remove(d),V(this,fZ).delete(d)}updatePath(d,l){V(this,fZ).get(d).setAttribute("d",l.toSVGPath())}updateBox(d,l){var U;b(U=Ll,eQ,Ci).call(U,V(this,ol).get(d),l)}show(d,l){V(this,ol).get(d).classList.toggle("hidden",!l)}rotate(d,l){V(this,ol).get(d).setAttribute("data-main-rotation",l)}changeColor(d,l){V(this,ol).get(d).setAttribute("fill",l)}changeOpacity(d,l){V(this,ol).get(d).setAttribute("fill-opacity",l)}addClass(d,l){V(this,ol).get(d).classList.add(l)}removeClass(d,l){V(this,ol).get(d).classList.remove(l)}remove(d){V(this,md)!==null&&(V(this,ol).get(d).remove(),V(this,ol).delete(d))}destroy(){m(this,md,null);for(const d of V(this,ol).values())d.remove();V(this,ol).clear()}},md=new WeakMap,mQ=new WeakMap,ol=new WeakMap,fZ=new WeakMap,eQ=new WeakSet,Ci=function(d,{x:l=0,y:U=0,width:Z=1,height:F=1}={}){const{style:t}=d;t.top=`${100*U}%`,t.left=`${100*l}%`,t.width=`${100*Z}%`,t.height=`${100*F}%`},MQ=new WeakSet,xi=function(d){var l;const U=Ll._svgFactory.create(1,1,!0);return V(this,md).append(U),U.setAttribute("aria-hidden",!0),b(l=Ll,eQ,Ci).call(l,U,d),U},ri=new WeakSet,zm=function(d,l){const U=Ll._svgFactory.createElement("clipPath");d.append(U);const Z=`clip_${l}`;U.setAttribute("id",Z),U.setAttribute("clipPathUnits","objectBoundingBox");const F=Ll._svgFactory.createElement("use");return U.append(F),F.setAttribute("href",`#${l}`),F.classList.add("clip"),Z},i(Ll,eQ),Ll);H.AbortException;H.AnnotationEditorLayer;H.AnnotationEditorParamsType;H.AnnotationEditorType;H.AnnotationEditorUIManager;var ST=H.AnnotationLayer;H.AnnotationMode;H.CMapCompressionType;H.ColorPicker;H.DOMSVGFactory;H.DrawLayer;H.FeatureTest;var ji=H.GlobalWorkerOptions;H.ImageKind;H.InvalidPDFException;H.MissingPDFException;H.OPS;H.Outliner;H.PDFDataRangeTransport;H.PDFDateString;H.PDFWorker;var XT=H.PasswordResponses;H.PermissionFlag;H.PixelsPerInch;H.RenderingCancelledException;var YT=H.TextLayer;H.UnexpectedResponseException;H.Util;H.VerbosityLevel;H.XfaLayer;H.build;H.createValidAbsoluteUrl;H.fetchData;var pT=H.getDocument;H.getFilenameFromUrl;H.getPdfFilenameFromUrl;H.getXfaPageViewport;H.isDataScheme;H.isPdfFile;H.noContextMenu;H.normalizeUnicode;H.renderTextLayer;H.setLayerDimensions;H.shadow;H.updateTextLayer;H.version;const BT="data:application/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIzIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDU3Nikscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWEoQXJyYXlCdWZmZXIucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1yKGUpKXRocm93IG5ldyBzKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9aSg3Mzk0KSxzPWEoQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoMCE9PXIoZSkpcmV0dXJuITE7dHJ5e3MoZSwwLDApO3JldHVybiExfWNhdGNoKGUpe3JldHVybiEwfX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDMyMzgpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksQz1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsbD1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPWEuVHlwZUVycm9yLHU9TWF0aC5taW4sZD1sLnByb3RvdHlwZSxmPVEucHJvdG90eXBlLHA9cihkLnNsaWNlKSxtPXMoZCwicmVzaXphYmxlIiwiZ2V0IikseT1zKGQsIm1heEJ5dGVMZW5ndGgiLCJnZXQiKSx3PXIoZi5nZXRJbnQ4KSxiPXIoZi5zZXRJbnQ4KTtlLmV4cG9ydHM9KEN8fGMpJiZmdW5jdGlvbihlLHQsaSl7dmFyIGEscj1nKGUpLHM9dm9pZCAwPT09dD9yOm4odCksZD0hbXx8IW0oZSk7aWYobyhlKSl0aHJvdyBuZXcgRSgiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtpZihDKXtlPWgoZSx7dHJhbnNmZXI6W2VdfSk7aWYocj09PXMmJihpfHxkKSlyZXR1cm4gZX1pZihyPj1zJiYoIWl8fGQpKWE9cChlLDAscyk7ZWxzZXt2YXIgZj1pJiYhZCYmeT97bWF4Qnl0ZUxlbmd0aDp5KGUpfTp2b2lkIDA7YT1uZXcgbChzLGYpO2Zvcih2YXIgRD1uZXcgUShlKSxTPW5ldyBRKGEpLGs9dShzLHIpLFI9MDtSPGs7UisrKWIoUyxSLHcoRCxSKSl9Q3x8YyhlKTtyZXR1cm4gYX19LDQ2NDQ6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoNzgxMSksbz1pKDM3MjQpLGc9aSg0NDc1KSxjPWkoNDkwMSksQz1pKDM0KSxoPWkoOTI5NyksbD1pKDY5NTUpLFE9aSg2ODIzKSxFPWkoNjY5OSksdT1pKDY4NDApLGQ9aSgyMTA2KSxmPWkoMTYyNSkscD1pKDI3ODcpLG09aSgyOTY3KSx5PWkoODIyNyksdz1pKDMzOTIpLGI9aSgxMTgxKSxEPWIuZW5mb3JjZSxTPWIuZ2V0LGs9Zy5JbnQ4QXJyYXksUj1rJiZrLnByb3RvdHlwZSxOPWcuVWludDhDbGFtcGVkQXJyYXksRz1OJiZOLnByb3RvdHlwZSx4PWsmJnAoayksVT1SJiZwKFIpLE09T2JqZWN0LnByb3RvdHlwZSxMPWcuVHlwZUVycm9yLEg9eSgidG9TdHJpbmdUYWciKSxKPXcoIlRZUEVEX0FSUkFZX1RBRyIpLFk9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsdj1uJiYhIW0mJiJPcGVyYSIhPT1sKGcub3BlcmEpLFQ9ITEsSz17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LHE9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTtpZihDKHQpKXt2YXIgaT1TKHQpO3JldHVybiBpJiZoKGksWSk/aVtZXTpnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IodCl9fSxpc1R5cGVkQXJyYXk9ZnVuY3Rpb24oZSl7aWYoIUMoZSkpcmV0dXJuITE7dmFyIHQ9bChlKTtyZXR1cm4gaChLLHQpfHxoKHEsdCl9O2ZvcihhIGluIEspKHM9KHI9Z1thXSkmJnIucHJvdG90eXBlKT9EKHMpW1ldPXI6dj0hMTtmb3IoYSBpbiBxKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSkmJihEKHMpW1ldPXIpO2lmKCF2fHwhYyh4KXx8eD09PUZ1bmN0aW9uLnByb3RvdHlwZSl7eD1mdW5jdGlvbiBUeXBlZEFycmF5KCl7dGhyb3cgbmV3IEwoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9O2lmKHYpZm9yKGEgaW4gSylnW2FdJiZtKGdbYV0seCl9aWYoIXZ8fCFVfHxVPT09TSl7VT14LnByb3RvdHlwZTtpZih2KWZvcihhIGluIEspZ1thXSYmbShnW2FdLnByb3RvdHlwZSxVKX12JiZwKEcpIT09VSYmbShHLFUpO2lmKG8mJiFoKFUsSCkpe1Q9ITA7ZChVLEgse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQyh0aGlzKT90aGlzW0pdOnZvaWQgMH19KTtmb3IoYSBpbiBLKWdbYV0mJkUoZ1thXSxKLGEpfWUuZXhwb3J0cz17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzp2LFRZUEVEX0FSUkFZX1RBRzpUJiZKLGFUeXBlZEFycmF5OmZ1bmN0aW9uKGUpe2lmKGlzVHlwZWRBcnJheShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgTCgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24oZSl7aWYoYyhlKSYmKCFtfHxmKHgsZSkpKXJldHVybiBlO3Rocm93IG5ldyBMKFEoZSkrIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKGUsdCxpLGEpe2lmKG8pe2lmKGkpZm9yKHZhciByIGluIEspe3ZhciBzPWdbcl07aWYocyYmaChzLnByb3RvdHlwZSxlKSl0cnl7ZGVsZXRlIHMucHJvdG90eXBlW2VdfWNhdGNoKGkpe3RyeXtzLnByb3RvdHlwZVtlXT10fWNhdGNoKGUpe319fVVbZV0mJiFpfHx1KFUsZSxpP3Q6diYmUltlXXx8dCxhKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI7aWYobyl7aWYobSl7aWYoaSlmb3IoYSBpbiBLKWlmKChyPWdbYV0pJiZoKHIsZSkpdHJ5e2RlbGV0ZSByW2VdfWNhdGNoKGUpe31pZih4W2VdJiYhaSlyZXR1cm47dHJ5e3JldHVybiB1KHgsZSxpP3Q6diYmeFtlXXx8dCl9Y2F0Y2goZSl7fX1mb3IoYSBpbiBLKSEocj1nW2FdKXx8cltlXSYmIWl8fHUocixlLHQpfX0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGlzVmlldzpmdW5jdGlvbiBpc1ZpZXcoZSl7aWYoIUMoZSkpcmV0dXJuITE7dmFyIHQ9bChlKTtyZXR1cm4iRGF0YVZpZXciPT09dHx8aChLLHQpfHxoKHEsdCl9LGlzVHlwZWRBcnJheSxUeXBlZEFycmF5OngsVHlwZWRBcnJheVByb3RvdHlwZTpVfX0sNTM3MDooZSx0LGkpPT57dmFyIGE9aSg2MTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgcj0wLHM9YXJndW1lbnRzLmxlbmd0aD4yP2k6YSh0KSxuPW5ldyBlKHMpO3M+cjspbltyXT10W3IrK107cmV0dXJuIG59fSw5NjE3OihlLHQsaSk9Pnt2YXIgYT1pKDUzOTcpLHI9aSg1NjEwKSxzPWkoNjE5OCksY3JlYXRlTWV0aG9kPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LGksbil7dmFyIG89YSh0KSxnPXMobyk7aWYoMD09PWcpcmV0dXJuIWUmJi0xO3ZhciBjLEM9cihuLGcpO2lmKGUmJmkhPWkpe2Zvcig7Zz5DOylpZigoYz1vW0MrK10pIT1jKXJldHVybiEwfWVsc2UgZm9yKDtnPkM7QysrKWlmKChlfHxDIGluIG8pJiZvW0NdPT09aSlyZXR1cm4gZXx8Q3x8MDtyZXR1cm4hZSYmLTF9fTtlLmV4cG9ydHM9e2luY2x1ZGVzOmNyZWF0ZU1ldGhvZCghMCksaW5kZXhPZjpjcmVhdGVNZXRob2QoITEpfX0sNDUyNzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDM3Nikscz1UeXBlRXJyb3Isbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89YSYmIWZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcylyZXR1cm4hMDt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLmxlbmd0aD0xfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKTtlLmV4cG9ydHM9bz9mdW5jdGlvbihlLHQpe2lmKHIoZSkmJiFuKGUsImxlbmd0aCIpLndyaXRhYmxlKXRocm93IG5ldyBzKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIGUubGVuZ3RoPXR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoPXR9fSw3NjI4OihlLHQsaSk9Pnt2YXIgYT1pKDYxOTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgaT1hKGUpLHI9bmV3IHQoaSkscz0wO3M8aTtzKyspcltzXT1lW2ktcy0xXTtyZXR1cm4gcn19LDk5Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCkscj1pKDEyOTEpLHM9UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89YShlKSxnPXIoaSksYz1nPDA/bytnOmc7aWYoYz49b3x8YzwwKXRocm93IG5ldyBzKCJJbmNvcnJlY3QgaW5kZXgiKTtmb3IodmFyIEM9bmV3IHQobyksaD0wO2g8bztoKyspQ1toXT1oPT09Yz9uOmVbaF07cmV0dXJuIEN9fSw2MzE5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpLHI9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkscyl7dHJ5e3JldHVybiBzP3QoYShpKVswXSxpWzFdKTp0KGkpfWNhdGNoKHQpe3IoZSwidGhyb3ciLHQpfX19LDQ1NzY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1hKHt9LnRvU3RyaW5nKSxzPWEoIiIuc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcyhyKGUpLDgsLTEpfX0sNjk1NTooZSx0LGkpPT57dmFyIGE9aSgyMTQwKSxyPWkoNDkwMSkscz1pKDQ1NzYpLG49aSg4MjI3KSgidG9TdHJpbmdUYWciKSxvPU9iamVjdCxnPSJBcmd1bWVudHMiPT09cyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1hP3M6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGk9ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2goZSl7fX0odD1vKGUpLG4pKT9pOmc/cyh0KToiT2JqZWN0Ij09PShhPXModCkpJiZyKHQuY2FsbGVlKT8iQXJndW1lbnRzIjphfX0sNzc0MDooZSx0LGkpPT57dmFyIGE9aSg5Mjk3KSxyPWkoNTAzMSkscz1pKDczNDcpLG49aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgbz1yKHQpLGc9bi5mLGM9cy5mLEM9MDtDPG8ubGVuZ3RoO0MrKyl7dmFyIGg9b1tDXTthKGUsaCl8fGkmJmEoaSxoKXx8ZyhlLGgsYyh0LGgpKX19fSwyMjExOihlLHQsaSk9Pnt2YXIgYT1pKDkwMzkpO2UuZXhwb3J0cz0hYSgoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGw7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRikhPT1GLnByb3RvdHlwZX0pKX0sMjUyOTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3ZhbHVlOmUsZG9uZTp0fX19LDY2OTk6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQ5MTMpLHM9aSg2OTgwKTtlLmV4cG9ydHM9YT9mdW5jdGlvbihlLHQsaSl7cmV0dXJuIHIuZihlLHQscygxLGkpKX06ZnVuY3Rpb24oZSx0LGkpe2VbdF09aTtyZXR1cm4gZX19LDY5ODA6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZlKSxjb25maWd1cmFibGU6ISgyJmUpLHdyaXRhYmxlOiEoNCZlKSx2YWx1ZTp0fX19LDQ2NTk6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQ5MTMpLHM9aSg2OTgwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2E/ci5mKGUsdCxzKDAsaSkpOmVbdF09aX19LDIxMDY6KGUsdCxpKT0+e3ZhciBhPWkoMjgzKSxyPWkoNDkxMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtpLmdldCYmYShpLmdldCx0LHtnZXR0ZXI6ITB9KTtpLnNldCYmYShpLnNldCx0LHtzZXR0ZXI6ITB9KTtyZXR1cm4gci5mKGUsdCxpKX19LDY4NDA6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSkscj1pKDQ5MTMpLHM9aSgyODMpLG49aSg5NDMzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGksbyl7b3x8KG89e30pO3ZhciBnPW8uZW51bWVyYWJsZSxjPXZvaWQgMCE9PW8ubmFtZT9vLm5hbWU6dDthKGkpJiZzKGksYyxvKTtpZihvLmdsb2JhbClnP2VbdF09aTpuKHQsaSk7ZWxzZXt0cnl7by51bnNhZmU/ZVt0XSYmKGc9ITApOmRlbGV0ZSBlW3RdfWNhdGNoKGUpe31nP2VbdF09aTpyLmYoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFvLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohby5ub25Xcml0YWJsZX0pfXJldHVybiBlfX0sNjI3OTooZSx0LGkpPT57dmFyIGE9aSg2ODQwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgciBpbiB0KWEoZSxyLHRbcl0saSk7cmV0dXJuIGV9fSw5NDMzOihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXtyKGEsZSx7dmFsdWU6dCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChpKXthW2VdPXR9cmV0dXJuIHR9fSwzNzI0OihlLHQsaSk9Pnt2YXIgYT1pKDkwMzkpO2UuZXhwb3J0cz0hYSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKX0sNDQ4MzooZSx0LGkpPT57dmFyIGEscixzLG4sbz1pKDQ0NzUpLGc9aSg5NzE0KSxjPWkoMTU0OCksQz1vLnN0cnVjdHVyZWRDbG9uZSxoPW8uQXJyYXlCdWZmZXIsbD1vLk1lc3NhZ2VDaGFubmVsLFE9ITE7aWYoYylRPWZ1bmN0aW9uKGUpe0MoZSx7dHJhbnNmZXI6W2VdfSl9O2Vsc2UgaWYoaCl0cnl7bHx8KGE9Zygid29ya2VyX3RocmVhZHMiKSkmJihsPWEuTWVzc2FnZUNoYW5uZWwpO2lmKGwpe3I9bmV3IGw7cz1uZXcgaCgyKTtuPWZ1bmN0aW9uKGUpe3IucG9ydDEucG9zdE1lc3NhZ2UobnVsbCxbZV0pfTtpZigyPT09cy5ieXRlTGVuZ3RoKXtuKHMpOzA9PT1zLmJ5dGVMZW5ndGgmJihRPW4pfX19Y2F0Y2goZSl7fWUuZXhwb3J0cz1RfSw0MDU1OihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9aSgzNCkscz1hLmRvY3VtZW50LG49cihzKSYmcihzLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbj9zLmNyZWF0ZUVsZW1lbnQoZSk6e319fSw2ODM3OmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGU+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyB0KCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gZX19LDUwMDI6ZT0+e2UuZXhwb3J0cz17SW5kZXhTaXplRXJyb3I6e3M6IklOREVYX1NJWkVfRVJSIixjOjEsbToxfSxET01TdHJpbmdTaXplRXJyb3I6e3M6IkRPTVNUUklOR19TSVpFX0VSUiIsYzoyLG06MH0sSGllcmFyY2h5UmVxdWVzdEVycm9yOntzOiJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLGM6MyxtOjF9LFdyb25nRG9jdW1lbnRFcnJvcjp7czoiV1JPTkdfRE9DVU1FTlRfRVJSIixjOjQsbToxfSxJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6e3M6IklOVkFMSURfQ0hBUkFDVEVSX0VSUiIsYzo1LG06MX0sTm9EYXRhQWxsb3dlZEVycm9yOntzOiJOT19EQVRBX0FMTE9XRURfRVJSIixjOjYsbTowfSxOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjp7czoiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIixjOjcsbToxfSxOb3RGb3VuZEVycm9yOntzOiJOT1RfRk9VTkRfRVJSIixjOjgsbToxfSxOb3RTdXBwb3J0ZWRFcnJvcjp7czoiTk9UX1NVUFBPUlRFRF9FUlIiLGM6OSxtOjF9LEluVXNlQXR0cmlidXRlRXJyb3I6e3M6IklOVVNFX0FUVFJJQlVURV9FUlIiLGM6MTAsbToxfSxJbnZhbGlkU3RhdGVFcnJvcjp7czoiSU5WQUxJRF9TVEFURV9FUlIiLGM6MTEsbToxfSxTeW50YXhFcnJvcjp7czoiU1lOVEFYX0VSUiIsYzoxMixtOjF9LEludmFsaWRNb2RpZmljYXRpb25FcnJvcjp7czoiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIixjOjEzLG06MX0sTmFtZXNwYWNlRXJyb3I6e3M6Ik5BTUVTUEFDRV9FUlIiLGM6MTQsbToxfSxJbnZhbGlkQWNjZXNzRXJyb3I6e3M6IklOVkFMSURfQUNDRVNTX0VSUiIsYzoxNSxtOjF9LFZhbGlkYXRpb25FcnJvcjp7czoiVkFMSURBVElPTl9FUlIiLGM6MTYsbTowfSxUeXBlTWlzbWF0Y2hFcnJvcjp7czoiVFlQRV9NSVNNQVRDSF9FUlIiLGM6MTcsbToxfSxTZWN1cml0eUVycm9yOntzOiJTRUNVUklUWV9FUlIiLGM6MTgsbToxfSxOZXR3b3JrRXJyb3I6e3M6Ik5FVFdPUktfRVJSIixjOjE5LG06MX0sQWJvcnRFcnJvcjp7czoiQUJPUlRfRVJSIixjOjIwLG06MX0sVVJMTWlzbWF0Y2hFcnJvcjp7czoiVVJMX01JU01BVENIX0VSUiIsYzoyMSxtOjF9LFF1b3RhRXhjZWVkZWRFcnJvcjp7czoiUVVPVEFfRVhDRUVERURfRVJSIixjOjIyLG06MX0sVGltZW91dEVycm9yOntzOiJUSU1FT1VUX0VSUiIsYzoyMyxtOjF9LEludmFsaWROb2RlVHlwZUVycm9yOntzOiJJTlZBTElEX05PREVfVFlQRV9FUlIiLGM6MjQsbToxfSxEYXRhQ2xvbmVFcnJvcjp7czoiREFUQV9DTE9ORV9FUlIiLGM6MjUsbToxfX19LDcyOTA6KGUsdCxpKT0+e3ZhciBhPWkoNTE2KSxyPWkoOTA4OCk7ZS5leHBvcnRzPSFhJiYhciYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LDUxNjplPT57ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LDkwODg6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDQ1NzYpO2UuZXhwb3J0cz0icHJvY2VzcyI9PT1yKGEucHJvY2Vzcyl9LDkzOTI6ZT0+e2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpfHwiIn0sNzM4ODooZSx0LGkpPT57dmFyIGEscixzPWkoNDQ3NSksbj1pKDkzOTIpLG89cy5wcm9jZXNzLGc9cy5EZW5vLGM9byYmby52ZXJzaW9uc3x8ZyYmZy52ZXJzaW9uLEM9YyYmYy52ODtDJiYocj0oYT1DLnNwbGl0KCIuIikpWzBdPjAmJmFbMF08ND8xOisoYVswXSthWzFdKSk7IXImJm4mJighKGE9bi5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fGFbMV0+PTc0KSYmKGE9bi5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKHI9K2FbMV0pO2UuZXhwb3J0cz1yfSw4NzI3OmU9PntlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sNjE5MzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPUVycm9yLHM9YSgiIi5yZXBsYWNlKSxuPVN0cmluZyhuZXcgcigienhjYXNkIikuc3RhY2spLG89L1xuXHMqYXQgW146XSo6W15cbl0qLyxnPW8udGVzdChuKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihnJiYic3RyaW5nIj09dHlwZW9mIGUmJiFyLnByZXBhcmVTdGFja1RyYWNlKWZvcig7dC0tOyllPXMoZSxvLCIiKTtyZXR1cm4gZX19LDY1MTg6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDczNDcpLmYscz1pKDY2OTkpLG49aSg2ODQwKSxvPWkoOTQzMyksZz1pKDc3NDApLGM9aSgyNzk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaSxDLGgsbCxRLEU9ZS50YXJnZXQsdT1lLmdsb2JhbCxkPWUuc3RhdDtpZihpPXU/YTpkP2FbRV18fG8oRSx7fSk6YVtFXSYmYVtFXS5wcm90b3R5cGUpZm9yKEMgaW4gdCl7bD10W0NdO2g9ZS5kb250Q2FsbEdldFNldD8oUT1yKGksQykpJiZRLnZhbHVlOmlbQ107aWYoIWModT9DOkUrKGQ/Ii4iOiIjIikrQyxlLmZvcmNlZCkmJnZvaWQgMCE9PWgpe2lmKHR5cGVvZiBsPT10eXBlb2YgaCljb250aW51ZTtnKGwsaCl9KGUuc2hhbXx8aCYmaC5zaGFtKSYmcyhsLCJzaGFtIiwhMCk7bihpLEMsbCxlKX19fSw5MDM5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKGUpe3JldHVybiEwfX19LDYwODA6KGUsdCxpKT0+e3ZhciBhPWkoNzQ3Nikscj1pKDkzMDYpLHM9aSg2MTYpLG49YShhLmJpbmQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3IoZSk7cmV0dXJuIHZvaWQgMD09PXQ/ZTpzP24oZSx0KTpmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSw2MTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7fS5iaW5kKCk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpfSkpfSw5NTY1OihlLHQsaSk9Pnt2YXIgYT1pKDYxNikscj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9YT9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSwzNTA6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkyOTcpLHM9RnVuY3Rpb24ucHJvdG90eXBlLG49YSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXIocywibmFtZSIpLGc9byYmInNvbWV0aGluZyI9PT1mdW5jdGlvbiBzb21ldGhpbmcoKXt9Lm5hbWUsYz1vJiYoIWF8fGEmJm4ocywibmFtZSIpLmNvbmZpZ3VyYWJsZSk7ZS5leHBvcnRzPXtFWElTVFM6byxQUk9QRVI6ZyxDT05GSUdVUkFCTEU6Y319LDY3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkzMDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dHJ5e3JldHVybiBhKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpW2ldKSl9Y2F0Y2goZSl7fX19LDc0NzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09YShlKSlyZXR1cm4gcihlKX19LDk1MDQ6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZSxzPXIuY2FsbCxuPWEmJnIuYmluZC5iaW5kKHMscyk7ZS5leHBvcnRzPWE/bjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy5hcHBseShlLGFyZ3VtZW50cyl9fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NDc1KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixDPVR5cGVFcnJvcixoPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWgodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBDKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NDc1OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDQ1NzYpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ0NzUpLGc9aSgzNCksYz1pKDY2OTkpLEM9aSg5Mjk3KSxoPWkoNzYyOSksbD1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGguc3RhdGUpe3ZhciBmPWguc3RhdGV8fChoLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPWwoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYoQyhlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIEMoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBDKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxDPWkoODEpLGg9aSg4NTEpLGw9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJmwodSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWgoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1DKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe2wodSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLEM9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxoPWkoMjUyOSksbD1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihDKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBoKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpoKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7bChpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gbChyLCJ0aHJvdyIsZSl9bChyLCJub3JtYWwiKTtyZXR1cm4gaCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLEM9aSgyNzg3KSxoPWkoNjg0MCksbD1pKDgyMjcpLFE9aSg2Mzk1KSxFPWwoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPUMoQyhzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxoKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksQz1pKDExODEpLGg9Qy5lbmZvcmNlLGw9Qy5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9aChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZsKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxDPWkoNjExOSksaD0icHJvdG90eXBlIixsPSJzY3JpcHQiLFE9QygiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK2wrIj4iK2UrIjwvIitsKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK2wrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtoXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2hdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2hdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLEM9MDtjPkM7KXMuZihlLGk9cltDKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLGw9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPUMoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOmwgaW4gaT9pW2xdOmFbbF0sZW51bWVyYWJsZTpoIGluIGk/aVtoXTphW2hdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxDPWkoNTkxNyksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2g6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihDKXRyeXtyZXR1cm4gaChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsQz1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP0M6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxDPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKEMsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4oQyxpKXx8ZyhDLGkpKTtyZXR1cm4gQ319LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxDPXIuaGFzLGg9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7Qyh0LGUpJiZoKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxDPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtoKHQsZSkmJkMocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJkMocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgQz1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKEMsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhDLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLEM9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpDfSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsQz1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9DKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ0NzUpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zNy4xIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM3LjEvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NDc1KSxyPWkoOTAzOSkscz1pKDczODgpLG49aSg3MjkwKSxvPWkoNTE2KSxnPWkoOTA4OCksYz1hLnN0cnVjdHVyZWRDbG9uZTtlLmV4cG9ydHM9ISFjJiYhcigoZnVuY3Rpb24oKXtpZihvJiZzPjkyfHxnJiZzPjk0fHxuJiZzPjk3KXJldHVybiExO3ZhciBlPW5ldyBBcnJheUJ1ZmZlcig4KSx0PWMoZSx7dHJhbnNmZXI6W2VdfSk7cmV0dXJuIDAhPT1lLmJ5dGVMZW5ndGh8fDghPT10LmJ5dGVMZW5ndGh9KSl9LDQ0OTU6KGUsdCxpKT0+e3ZhciBhPWkoNzM4OCkscj1pKDkwMzkpLHM9aSg0NDc1KS5TdHJpbmc7ZS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIXIoKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIXMoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmEmJmE8NDF9KSl9LDU2MTA6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1heCxzPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWEoZSk7cmV0dXJuIGk8MD9yKGkrdCwwKTpzKGksdCl9fSw1ODU0OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsIm51bWJlciIpO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgcigiQ2FuJ3QgY29udmVydCBudW1iZXIgdG8gYmlnaW50Iik7cmV0dXJuIEJpZ0ludCh0KX19LDc2OTY6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1pKDgwMTQpLHM9UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gMDt2YXIgdD1hKGUpLGk9cih0KTtpZih0IT09aSl0aHJvdyBuZXcgcygiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIGl9fSw1Mzk3OihlLHQsaSk9Pnt2YXIgYT1pKDcwNTUpLHI9aSg3NzUwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEocihlKSl9fSwxMjkxOihlLHQsaSk9Pnt2YXIgYT1pKDc0MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PStlO3JldHVybiB0IT10fHwwPT09dD8wOmEodCl9fSw4MDE0OihlLHQsaSk9Pnt2YXIgYT1pKDEyOTEpLHI9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ+MD9yKHQsOTAwNzE5OTI1NDc0MDk5MSk6MH19LDg5ODE6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MCkscj1PYmplY3Q7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGEoZSkpfX0sMjc3NzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoMzQpLHM9aSg3NTcpLG49aSg1OTY2KSxvPWkoNDI3MCksZz1pKDgyMjcpLGM9VHlwZUVycm9yLEM9ZygidG9QcmltaXRpdmUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighcihlKXx8cyhlKSlyZXR1cm4gZTt2YXIgaSxnPW4oZSxDKTtpZihnKXt2b2lkIDA9PT10JiYodD0iZGVmYXVsdCIpO2k9YShnLGUsdCk7aWYoIXIoaSl8fHMoaSkpcmV0dXJuIGk7dGhyb3cgbmV3IGMoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXZvaWQgMD09PXQmJih0PSJudW1iZXIiKTtyZXR1cm4gbyhlLHQpfX0sNjk2OTooZSx0LGkpPT57dmFyIGE9aSgyNzc3KSxyPWkoNzU3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlLCJzdHJpbmciKTtyZXR1cm4gcih0KT90OnQrIiJ9fSwyMTQwOihlLHQsaSk9Pnt2YXIgYT17fTthW2koODIyNykoInRvU3RyaW5nVGFnIildPSJ6IjtlLmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKGEpfSw2NTU6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09YShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiByKGUpfX0sOTcxNDooZSx0LGkpPT57dmFyIGE9aSg5MDg4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e2lmKGEpcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZSgiJytlKyciKScpKCl9Y2F0Y2goZSl7fX19LDY4MjM6ZT0+e3ZhciB0PVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LDMzOTI6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj0wLHM9TWF0aC5yYW5kb20oKSxuPWEoMS4udG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIituKCsrcitzLDM2KX19LDcwNDA6KGUsdCxpKT0+e3ZhciBhPWkoNDQ5NSk7ZS5leHBvcnRzPWEmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LDg2ODY6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpO2UuZXhwb3J0cz1hJiZyKChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LDI4MTI6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxpKXtpZihlPGkpdGhyb3cgbmV3IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw4NjIyOihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9aSg0OTAxKSxzPWEuV2Vha01hcDtlLmV4cG9ydHM9cihzKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhzKSl9LDgyMjc6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDU3NDUpLHM9aSg5Mjk3KSxuPWkoMzM5Miksbz1pKDQ0OTUpLGc9aSg3MDQwKSxjPWEuU3ltYm9sLEM9cigid2tzIiksaD1nP2MuZm9yfHxjOmMmJmMud2l0aG91dFNldHRlcnx8bjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cyhDLGUpfHwoQ1tlXT1vJiZzKGMsZSk/Y1tlXTpoKCJTeW1ib2wuIitlKSk7cmV0dXJuIENbZV19fSw2NTczOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSgyMTA2KSxzPWkoMzIzOCksbj1BcnJheUJ1ZmZlci5wcm90b3R5cGU7YSYmISgiZGV0YWNoZWQiaW4gbikmJnIobiwiZGV0YWNoZWQiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uIGRldGFjaGVkKCl7cmV0dXJuIHModGhpcyl9fSl9LDc5MzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sODEwMDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNTYzNik7ciYmYSh7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITB9LHt0cmFuc2ZlcjpmdW5jdGlvbiB0cmFuc2Zlcigpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCEwKX19KX0sNDExNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoODk4MSkscz1pKDYxOTgpLG49aSg0NTI3KSxvPWkoNjgzNyk7YSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6aSg5MDM5KSgoZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDk2NzI5NyE9PVtdLnB1c2guY2FsbCh7bGVuZ3RoOjQyOTQ5NjcyOTZ9LDEpfSkpfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uIHB1c2goZSl7dmFyIHQ9cih0aGlzKSxpPXModCksYT1hcmd1bWVudHMubGVuZ3RoO28oaSthKTtmb3IodmFyIGc9MDtnPGE7ZysrKXt0W2ldPWFyZ3VtZW50c1tnXTtpKyt9bih0LGkpO3JldHVybiBpfX0pfSw0NjI4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg2MDQzKTthKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITB9LHt3aXRoUmVzb2x2ZXJzOmZ1bmN0aW9uIHdpdGhSZXNvbHZlcnMoKXt2YXIgZT1yLmYodGhpcyk7cmV0dXJue3Byb21pc2U6ZS5wcm9taXNlLHJlc29sdmU6ZS5yZXNvbHZlLHJlamVjdDplLnJlamVjdH19fSl9LDk0Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDM3MjQpLHM9aSgyMTA2KSxuPWkoNzk3OSksbz1pKDkwMzkpLGc9YS5SZWdFeHAsYz1nLnByb3RvdHlwZTtyJiZvKChmdW5jdGlvbigpe3ZhciBlPSEwO3RyeXtnKCIuIiwiZCIpfWNhdGNoKHQpe2U9ITF9dmFyIHQ9e30saT0iIixhPWU/ImRnaW1zeSI6ImdpbXN5IixhZGRHZXR0ZXI9ZnVuY3Rpb24oZSxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6ZnVuY3Rpb24oKXtpKz1hO3JldHVybiEwfX0pfSxyPXtkb3RBbGw6InMiLGdsb2JhbDoiZyIsaWdub3JlQ2FzZToiaSIsbXVsdGlsaW5lOiJtIixzdGlja3k6InkifTtlJiYoci5oYXNJbmRpY2VzPSJkIik7Zm9yKHZhciBzIGluIHIpYWRkR2V0dGVyKHMscltzXSk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYywiZmxhZ3MiKS5nZXQuY2FsbCh0KSE9PWF8fGkhPT1hfSkpJiZzKGMsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpufSl9LDc2NDI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM0NDApO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiZGlmZmVyZW5jZSIpfSx7ZGlmZmVyZW5jZTpyfSl9LDgwMDQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDkwMzkpLHM9aSg4NzUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImludGVyc2VjdGlvbiIpfHxyKChmdW5jdGlvbigpe3JldHVybiIzLDIiIT09U3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwyLDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywyXSkpKSl9KSl9LHtpbnRlcnNlY3Rpb246c30pfSwzODUzOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NDQ5KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzRGlzam9pbnRGcm9tIil9LHtpc0Rpc2pvaW50RnJvbTpyfSl9LDU4NzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM4MzgpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdWJzZXRPZiIpfSx7aXNTdWJzZXRPZjpyfSl9LDI0NzU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1MjcpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdXBlcnNldE9mIil9LHtpc1N1cGVyc2V0T2Y6cn0pfSw1MDI0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNjUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInN5bW1ldHJpY0RpZmZlcmVuY2UiKX0se3N5bW1ldHJpY0RpZmZlcmVuY2U6cn0pfSwxNjk4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0MjA0KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInVuaW9uIil9LHt1bmlvbjpyfSl9LDc0Njc6KGUsdCxpKT0+e3ZhciBhPWkoNzYyOCkscj1pKDQ2NDQpLHM9ci5hVHlwZWRBcnJheSxuPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO24oInRvUmV2ZXJzZWQiLChmdW5jdGlvbiB0b1JldmVyc2VkKCl7cmV0dXJuIGEocyh0aGlzKSxvKHRoaXMpKX0pKX0sNDczMjooZSx0LGkpPT57dmFyIGE9aSg0NjQ0KSxyPWkoOTUwNCkscz1pKDkzMDYpLG49aSg1MzcwKSxvPWEuYVR5cGVkQXJyYXksZz1hLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixjPWEuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxDPXIoYS5UeXBlZEFycmF5UHJvdG90eXBlLnNvcnQpO2MoInRvU29ydGVkIiwoZnVuY3Rpb24gdG9Tb3J0ZWQoZSl7dm9pZCAwIT09ZSYmcyhlKTt2YXIgdD1vKHRoaXMpLGk9bihnKHQpLHQpO3JldHVybiBDKGksZSl9KSl9LDk1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoOTkyOCkscj1pKDQ2NDQpLHM9aSgxMTA4KSxuPWkoMTI5MSksbz1pKDU4NTQpLGc9ci5hVHlwZWRBcnJheSxjPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLEM9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGg9ISFmdW5jdGlvbigpe3RyeXtuZXcgSW50OEFycmF5KDEpLndpdGgoMix7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IDh9fSl9Y2F0Y2goZSl7cmV0dXJuIDg9PT1lfX0oKTtDKCJ3aXRoIix7d2l0aDpmdW5jdGlvbihlLHQpe3ZhciBpPWcodGhpcykscj1uKGUpLEM9cyhpKT9vKHQpOit0O3JldHVybiBhKGksYyhpKSxyLEMpfX0ud2l0aCwhaCl9LDg5OTI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ0NzUpLHM9aSg2NzkpLG49aSg4NTUxKSxvPWkoNDkwMSksZz1pKDI3ODcpLGM9aSgyMTA2KSxDPWkoNDY1OSksaD1pKDkwMzkpLGw9aSg5Mjk3KSxRPWkoODIyNyksRT1pKDc2NTcpLkl0ZXJhdG9yUHJvdG90eXBlLHU9aSgzNzI0KSxkPWkoNjM5NSksZj0iY29uc3RydWN0b3IiLHA9Ikl0ZXJhdG9yIixtPVEoInRvU3RyaW5nVGFnIikseT1UeXBlRXJyb3Isdz1yW3BdLGI9ZHx8IW8odyl8fHcucHJvdG90eXBlIT09RXx8IWgoKGZ1bmN0aW9uKCl7dyh7fSl9KSksRD1mdW5jdGlvbiBJdGVyYXRvcigpe3ModGhpcyxFKTtpZihnKHRoaXMpPT09RSl0aHJvdyBuZXcgeSgiQWJzdHJhY3QgY2xhc3MgSXRlcmF0b3Igbm90IGRpcmVjdGx5IGNvbnN0cnVjdGFibGUiKX0sZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3Nvcj1mdW5jdGlvbihlLHQpe3U/YyhFLGUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKHQpe24odGhpcyk7aWYodGhpcz09PUUpdGhyb3cgbmV3IHkoIllvdSBjYW4ndCByZWRlZmluZSB0aGlzIHByb3BlcnR5Iik7bCh0aGlzLGUpP3RoaXNbZV09dDpDKHRoaXMsZSx0KX19KTpFW2VdPXR9O2woRSxtKXx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihtLHApOyFiJiZsKEUsZikmJkVbZl0hPT1PYmplY3R8fGRlZmluZUl0ZXJhdG9yUHJvdG90eXBlQWNjZXNzb3IoZixEKTtELnByb3RvdHlwZT1FO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6Yn0se0l0ZXJhdG9yOkR9KX0sMzIxNTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2V2ZXJ5OmZ1bmN0aW9uIGV2ZXJ5KGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4hcih0LChmdW5jdGlvbih0LGEpe2lmKCFlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDQ1MjA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDk1NjUpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpLGc9aSg5NDYyKSxjPWkoNjMxOSksQz1pKDYzOTUpLGg9ZygoZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxpPXRoaXMuaXRlcmF0b3IsYT10aGlzLnByZWRpY2F0ZSxzPXRoaXMubmV4dDs7KXtlPW4ocihzLGkpKTtpZih0aGlzLmRvbmU9ISFlLmRvbmUpcmV0dXJuO3Q9ZS52YWx1ZTtpZihjKGksYSxbdCx0aGlzLmNvdW50ZXIrK10sITApKXJldHVybiB0fX0pKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpDfSx7ZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcihlKXtuKHRoaXMpO3MoZSk7cmV0dXJuIG5ldyBoKG8odGhpcykse3ByZWRpY2F0ZTplfSl9fSl9LDI1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtmaW5kOmZ1bmN0aW9uIGZpbmQoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEodCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pfSwzOTQ5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7Zm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyKHQsKGZ1bmN0aW9uKHQpe2UodCxpKyspfSkse0lTX1JFQ09SRDohMH0pfX0pfSwxNDU0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg3MTMpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmkoNjM5NSl9LHttYXA6cn0pfSw4ODcyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KSxnPVR5cGVFcnJvcjthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7cmVkdWNlOmZ1bmN0aW9uIHJlZHVjZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPWFyZ3VtZW50cy5sZW5ndGg8MixhPWk/dm9pZCAwOmFyZ3VtZW50c1sxXSxjPTA7cih0LChmdW5jdGlvbih0KXtpZihpKXtpPSExO2E9dH1lbHNlIGE9ZShhLHQsYyk7YysrfSkse0lTX1JFQ09SRDohMH0pO2lmKGkpdGhyb3cgbmV3IGcoIlJlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTtyZXR1cm4gYX19KX0sNzU1MDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3NvbWU6ZnVuY3Rpb24gc29tZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxhKXtpZihlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDE3OTU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1NTEpLHM9aSgyNjUyKSxuPWkoMTc2Nyksbz1bXS5wdXNoO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHt0b0FycmF5OmZ1bmN0aW9uIHRvQXJyYXkoKXt2YXIgZT1bXTtzKG4ocih0aGlzKSksbyx7dGhhdDplLElTX1JFQ09SRDohMH0pO3JldHVybiBlfX0pfSwzMzc1OihlLHQsaSk9PntpKDc2NDIpfSw5MjI1OihlLHQsaSk9PntpKDgwMDQpfSwzOTcyOihlLHQsaSk9PntpKDM4NTMpfSw5MjA5OihlLHQsaSk9PntpKDU4NzYpfSw1NzE0OihlLHQsaSk9PntpKDI0NzUpfSw3NTYxOihlLHQsaSk9PntpKDUwMjQpfSw2MTk3OihlLHQsaSk9PntpKDE2OTgpfSw0OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NDc1KSxzPWkoNzc1MSksbj1pKDY5ODApLG89aSg0OTEzKS5mLGc9aSg5Mjk3KSxjPWkoNjc5KSxDPWkoMzE2NyksaD1pKDI2MDMpLGw9aSg1MDAyKSxRPWkoNjE5MyksRT1pKDM3MjQpLHU9aSg2Mzk1KSxkPSJET01FeGNlcHRpb24iLGY9cygiRXJyb3IiKSxwPXMoZCksbT1mdW5jdGlvbiBET01FeGNlcHRpb24oKXtjKHRoaXMseSk7dmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PWgoZTwxP3ZvaWQgMDphcmd1bWVudHNbMF0pLGk9aChlPDI/dm9pZCAwOmFyZ3VtZW50c1sxXSwiRXJyb3IiKSxhPW5ldyBwKHQsaSkscj1uZXcgZih0KTtyLm5hbWU9ZDtvKGEsInN0YWNrIixuKDEsUShyLnN0YWNrLDEpKSk7QyhhLHRoaXMsbSk7cmV0dXJuIGF9LHk9bS5wcm90b3R5cGU9cC5wcm90b3R5cGUsdz0ic3RhY2siaW4gbmV3IGYoZCksYj0ic3RhY2siaW4gbmV3IHAoMSwyKSxEPXAmJkUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixkKSxTPSEoIUR8fEQud3JpdGFibGUmJkQuY29uZmlndXJhYmxlKSxrPXcmJiFTJiYhYjthKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOnV8fGt9LHtET01FeGNlcHRpb246az9tOnB9KTt2YXIgUj1zKGQpLE49Ui5wcm90b3R5cGU7aWYoTi5jb25zdHJ1Y3RvciE9PVIpe3V8fG8oTiwiY29uc3RydWN0b3IiLG4oMSxSKSk7Zm9yKHZhciBHIGluIGwpaWYoZyhsLEcpKXt2YXIgeD1sW0ddLFU9eC5zO2coUixVKXx8byhSLFUsbig2LHguYykpfX19LDM2MTE6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ0NzUpLHM9aSgyMTA2KSxuPWkoMzcyNCksbz1UeXBlRXJyb3IsZz1PYmplY3QuZGVmaW5lUHJvcGVydHksYz1yLnNlbGYhPT1yO3RyeXtpZihuKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsInNlbGYiKTshYyYmQyYmQy5nZXQmJkMuZW51bWVyYWJsZXx8cyhyLCJzZWxmIix7Z2V0OmZ1bmN0aW9uIHNlbGYoKXtyZXR1cm4gcn0sc2V0OmZ1bmN0aW9uIHNlbGYoZSl7aWYodGhpcyE9PXIpdGhyb3cgbmV3IG8oIklsbGVnYWwgaW52b2NhdGlvbiIpO2cociwic2VsZiIse3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX1lbHNlIGEoe2dsb2JhbDohMCxzaW1wbGU6ITAsZm9yY2VkOmN9LHtzZWxmOnJ9KX1jYXRjaChlKXt9fSw0NjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApLHI9aSg5NTA0KSxzPWkoNjU1KSxuPWkoMjgxMiksbz1VUkxTZWFyY2hQYXJhbXMsZz1vLnByb3RvdHlwZSxjPXIoZy5hcHBlbmQpLEM9cihnLmRlbGV0ZSksaD1yKGcuZm9yRWFjaCksbD1yKFtdLnB1c2gpLFE9bmV3IG8oImE9MSZhPTImYj0zIik7US5kZWxldGUoImEiLDEpO1EuZGVsZXRlKCJiIix2b2lkIDApO1ErIiIhPSJhPTIiJiZhKGcsImRlbGV0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgsaT10PDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZih0JiZ2b2lkIDA9PT1pKXJldHVybiBDKHRoaXMsZSk7dmFyIGE9W107aCh0aGlzLChmdW5jdGlvbihlLHQpe2woYSx7a2V5OnQsdmFsdWU6ZX0pfSkpO24odCwxKTtmb3IodmFyIHIsbz1zKGUpLGc9cyhpKSxRPTAsRT0wLHU9ITEsZD1hLmxlbmd0aDtRPGQ7KXtyPWFbUSsrXTtpZih1fHxyLmtleT09PW8pe3U9ITA7Qyh0aGlzLHIua2V5KX1lbHNlIEUrK31mb3IoO0U8ZDspKHI9YVtFKytdKS5rZXk9PT1vJiZyLnZhbHVlPT09Z3x8Yyh0aGlzLHIua2V5LHIudmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDc1NjY6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmdldEFsbCksQz1yKGcuaGFzKSxoPW5ldyBvKCJhPTEiKTshaC5oYXMoImEiLDIpJiZoLmhhcygiYSIsdm9pZCAwKXx8YShnLCJoYXMiLChmdW5jdGlvbiBoYXMoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIEModGhpcyxlKTt2YXIgYT1jKHRoaXMsZSk7bih0LDEpO2Zvcih2YXIgcj1zKGkpLG89MDtvPGEubGVuZ3RoOylpZihhW28rK109PT1yKXJldHVybiEwO3JldHVybiExfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDg3MjE6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDk1MDQpLHM9aSgyMTA2KSxuPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUsbz1yKG4uZm9yRWFjaCk7YSYmISgic2l6ZSJpbiBuKSYmcyhuLCJzaXplIix7Z2V0OmZ1bmN0aW9uIHNpemUoKXt2YXIgZT0wO28odGhpcywoZnVuY3Rpb24oKXtlKyt9KSk7cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9fSx0PXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oaSl7dmFyIGE9dFtpXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIHI9dFtpXT17ZXhwb3J0czp7fX07ZVtpXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKTtyZXR1cm4gci5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgaSBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LGkpJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsaSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkse2VudW1lcmFibGU6ITAsZ2V0OnRbaV19KX07X193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KTt2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IGdsb2JhbFRoaXMucGRmanNXb3JrZXIgPSB7fTtfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7V29ya2VyTWVzc2FnZUhhbmRsZXI6KCk9Pldvcmtlck1lc3NhZ2VIYW5kbGVyfSk7X193ZWJwYWNrX3JlcXVpcmVfXyg0MTE0KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDY1NzMpLF9fd2VicGFja19yZXF1aXJlX18oODEwMCksX193ZWJwYWNrX3JlcXVpcmVfXyg3OTM2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MjgpLF9fd2VicGFja19yZXF1aXJlX18oNzQ2NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0NzMyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODk5MiksX193ZWJwYWNrX3JlcXVpcmVfXygzOTQ5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDE0NTQpLF9fd2VicGFja19yZXF1aXJlX18oNzU1MCksX193ZWJwYWNrX3JlcXVpcmVfXygzMzc1KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDkyMjUpLF9fd2VicGFja19yZXF1aXJlX18oMzk3MiksX193ZWJwYWNrX3JlcXVpcmVfXyg5MjA5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDU3MTQpLF9fd2VicGFja19yZXF1aXJlX18oNzU2MSksX193ZWJwYWNrX3JlcXVpcmVfXyg2MTk3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNDYwMyksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTY2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg3MjEpO2NvbnN0IGk9ISgib2JqZWN0IiE9dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MrIiIhPSJbb2JqZWN0IHByb2Nlc3NdInx8cHJvY2Vzcy52ZXJzaW9ucy5ud3x8cHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiYmcHJvY2Vzcy50eXBlJiYiYnJvd3NlciIhPT1wcm9jZXNzLnR5cGUpLGE9WzEsMCwwLDEsMCwwXSxyPVsuMDAxLDAsMCwuMDAxLDAsMF0scz0xLjM1LG49LjM1LG89LjI1OTI1OTI1OTI1OTI1OTI0LGc9MSxjPTIsQz00LGg9OCxsPTE2LFE9NjQsRT0yNTYsdT0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsZD0zLGY9OSxwPTEzLG09MTUseT17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSx3PTAsYj00LEQ9MSxTPTIsaz0zLFI9MSxOPTIsRz0zLHg9NCxVPTUsTT02LEw9NyxIPTgsSj05LFk9MTAsdj0xMSxUPTEyLEs9MTMscT0xNCxPPTE1LFc9MTYsaj0xNyxYPTIwLFo9Ikdyb3VwIixWPSJSIixfPTEsej0yLCQ9NCxBQT0xNixlQT0zMix0QT0xMjgsaUE9NTEyLGFBPTEsckE9MixzQT00MDk2LG5BPTgxOTIsb0E9MzI3NjgsZ0E9NjU1MzYsSUE9MTMxMDcyLGNBPTEwNDg1NzYsQ0E9MjA5NzE1MixoQT04Mzg4NjA4LGxBPTE2Nzc3MjE2LEJBPTEsUUE9MixFQT0zLHVBPTQsZEE9NSxmQT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn0scEE9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9LG1BPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn0seUE9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX0sd0E9e05PTkU6MCxCSU5BUlk6MX0sYkE9MSxEQT0yLEZBPTMsU0E9NCxrQT01LFJBPTYsTkE9NyxHQT04LHhBPTksVUE9MTAsTUE9MTEsTEE9MTIsSEE9MTMsSkE9MTQsWUE9MTUsdkE9MTYsVEE9MTcsS0E9MTgscUE9MTksT0E9MjAsUEE9MjEsV0E9MjIsakE9MjMsWEE9MjQsWkE9MjUsVkE9MjYsX0E9MjcsekE9MjgsJEE9MjksQWU9MzAsZWU9MzEsdGU9MzIsaWU9MzMsYWU9MzQscmU9MzUsc2U9MzYsbmU9Mzcsb2U9MzgsZ2U9MzksSWU9NDAsY2U9NDEsQ2U9NDIsaGU9NDMsbGU9NDQsQmU9NDUsUWU9NDYsRWU9NDcsdWU9NDgsZGU9NDksZmU9NTAscGU9NTEsbWU9NTIseWU9NTMsd2U9NTQsYmU9NTUsRGU9NTYsRmU9NTcsU2U9NTgsa2U9NTksUmU9NjAsTmU9NjEsR2U9NjIseGU9NjMsVWU9NjQsTWU9NjUsTGU9NjYsSGU9NjcsSmU9NjgsWWU9NjksdmU9NzAsVGU9NzEsS2U9NzIscWU9NzMsT2U9NzQsUGU9NzUsV2U9NzYsamU9NzcsWGU9ODAsWmU9ODEsVmU9ODMsX2U9ODQsemU9ODUsJGU9ODYsQXQ9ODcsZXQ9ODgsdHQ9ODksaXQ9OTAsYXQ9OTEscnQ9MSxzdD0yO2xldCBudD15QS5XQVJOSU5HUztmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBudH1mdW5jdGlvbiBpbmZvKGUpe250Pj15QS5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe250Pj15QS5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBvdD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtjbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiUGFzc3dvcmRFeGNlcHRpb24iKTt0aGlzLmNvZGU9dH19Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmtub3duRXJyb3JFeGNlcHRpb24iKTt0aGlzLmRldGFpbHM9dH19Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19Y2xhc3MgTWlzc2luZ1BERkV4Y2VwdGlvbiBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19Y2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10fX1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiQWJvcnRFeGNlcHRpb24iKX19ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyhlKXsib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCB0PWUubGVuZ3RoLGk9ODE5MjtpZih0PGkpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8dDtyKz1pKXtjb25zdCBzPU1hdGgubWluKHIraSx0KSxuPWUuc3ViYXJyYXkocixzKTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG4pKX1yZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0OysrYSlpW2FdPTI1NSZlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIGl9ZnVuY3Rpb24gc3RyaW5nMzIoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gb2JqZWN0U2l6ZShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RofWNsYXNzIEZlYXR1cmVUZXN0e3N0YXRpYyBnZXQgaXNMaXR0bGVFbmRpYW4oKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzTGl0dGxlRW5kaWFuIixmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiAxPT09bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsMSlbMF19KCkpfXN0YXRpYyBnZXQgaXNFdmFsU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uIGlzRXZhbFN1cHBvcnRlZCgpe3RyeXtuZXcgRnVuY3Rpb24oIiIpO3JldHVybiEwfWNhdGNoe3JldHVybiExfX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yPy5wbGF0Zm9ybT9zaGFkb3codGhpcywicGxhdGZvcm0iLHtpc01hYzpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIk1hYyIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITF9KX1zdGF0aWMgZ2V0IGlzQ1NTUm91bmRTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzQ1NTUm91bmRTdXBwb3J0ZWQiLGdsb2JhbFRoaXMuQ1NTPy5zdXBwb3J0cz8uKCJ3aWR0aDogcm91bmQoMS41cHgsIDFweCkiKSl9fWNvbnN0IGd0PUFycmF5LmZyb20oQXJyYXkoMjU2KS5rZXlzKCksKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpO2NsYXNzIFV0aWx7c3RhdGljIG1ha2VIZXhDb2xvcihlLHQsaSl7cmV0dXJuYCMke2d0W2VdfSR7Z3RbdF19JHtndFtpXX1gfXN0YXRpYyBzY2FsZU1pbk1heChlLHQpe2xldCBpO2lmKGVbMF0pe2lmKGVbMF08MCl7aT10WzBdO3RbMF09dFsyXTt0WzJdPWl9dFswXSo9ZVswXTt0WzJdKj1lWzBdO2lmKGVbM108MCl7aT10WzFdO3RbMV09dFszXTt0WzNdPWl9dFsxXSo9ZVszXTt0WzNdKj1lWzNdfWVsc2V7aT10WzBdO3RbMF09dFsxXTt0WzFdPWk7aT10WzJdO3RbMl09dFszXTt0WzNdPWk7aWYoZVsxXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzFdO3RbM10qPWVbMV07aWYoZVsyXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzJdO3RbMl0qPWVbMl19dFswXSs9ZVs0XTt0WzFdKz1lWzVdO3RbMl0rPWVbNF07dFszXSs9ZVs1XX1zdGF0aWMgdHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzJdKnRbMV0sZVsxXSp0WzBdK2VbM10qdFsxXSxlWzBdKnRbMl0rZVsyXSp0WzNdLGVbMV0qdFsyXStlWzNdKnRbM10sZVswXSp0WzRdK2VbMl0qdFs1XStlWzRdLGVbMV0qdFs0XStlWzNdKnRbNV0rZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzFdKnRbMl0rdFs0XSxlWzBdKnRbMV0rZVsxXSp0WzNdK3RbNV1dfXN0YXRpYyBhcHBseUludmVyc2VUcmFuc2Zvcm0oZSx0KXtjb25zdCBpPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuWyhlWzBdKnRbM10tZVsxXSp0WzJdK3RbMl0qdFs1XS10WzRdKnRbM10pL2ksKC1lWzBdKnRbMV0rZVsxXSp0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL2ldfXN0YXRpYyBnZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChlLHQpe2NvbnN0IGk9dGhpcy5hcHBseVRyYW5zZm9ybShlLHQpLGE9dGhpcy5hcHBseVRyYW5zZm9ybShlLnNsaWNlKDIsNCksdCkscj10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzBdLGVbM11dLHQpLHM9dGhpcy5hcHBseVRyYW5zZm9ybShbZVsyXSxlWzFdXSx0KTtyZXR1cm5bTWF0aC5taW4oaVswXSxhWzBdLHJbMF0sc1swXSksTWF0aC5taW4oaVsxXSxhWzFdLHJbMV0sc1sxXSksTWF0aC5tYXgoaVswXSxhWzBdLHJbMF0sc1swXSksTWF0aC5tYXgoaVsxXSxhWzFdLHJbMV0sc1sxXSldfXN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKGUpe2NvbnN0IHQ9ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bZVszXS90LC1lWzFdL3QsLWVbMl0vdCxlWzBdL3QsKGVbMl0qZVs1XS1lWzRdKmVbM10pL3QsKGVbNF0qZVsxXS1lWzVdKmVbMF0pL3RdfXN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlKXtjb25zdCB0PVtlWzBdLGVbMl0sZVsxXSxlWzNdXSxpPWVbMF0qdFswXStlWzFdKnRbMl0sYT1lWzBdKnRbMV0rZVsxXSp0WzNdLHI9ZVsyXSp0WzBdK2VbM10qdFsyXSxzPWVbMl0qdFsxXStlWzNdKnRbM10sbj0oaStzKS8yLG89TWF0aC5zcXJ0KChpK3MpKioyLTQqKGkqcy1yKmEpKS8yLGc9bitvfHwxLGM9bi1vfHwxO3JldHVybltNYXRoLnNxcnQoZyksTWF0aC5zcXJ0KGMpXX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3QgaT1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLGE9TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihpPmEpcmV0dXJuIG51bGw7Y29uc3Qgcj1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLHM9TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gcj5zP251bGw6W2kscixhLHNdfXN0YXRpYyNBKGUsdCxpLGEscixzLG4sbyxnLGMpe2lmKGc8PTB8fGc+PTEpcmV0dXJuO2NvbnN0IEM9MS1nLGg9ZypnLGw9aCpnLFE9QyooQyooQyplKzMqZyp0KSszKmgqaSkrbCphLEU9QyooQyooQypyKzMqZypzKSszKmgqbikrbCpvO2NbMF09TWF0aC5taW4oY1swXSxRKTtjWzFdPU1hdGgubWluKGNbMV0sRSk7Y1syXT1NYXRoLm1heChjWzJdLFEpO2NbM109TWF0aC5tYXgoY1szXSxFKX1zdGF0aWMjZShlLHQsaSxhLHIscyxuLG8sZyxjLEMsaCl7aWYoTWF0aC5hYnMoZyk8MWUtMTIpe01hdGguYWJzKGMpPj0xZS0xMiYmdGhpcy4jQShlLHQsaSxhLHIscyxuLG8sLUMvYyxoKTtyZXR1cm59Y29uc3QgbD1jKioyLTQqQypnO2lmKGw8MClyZXR1cm47Y29uc3QgUT1NYXRoLnNxcnQobCksRT0yKmc7dGhpcy4jQShlLHQsaSxhLHIscyxuLG8sKC1jK1EpL0UsaCk7dGhpcy4jQShlLHQsaSxhLHIscyxuLG8sKC1jLVEpL0UsaCl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxpLGEscixzLG4sbyxnKXtpZihnKXtnWzBdPU1hdGgubWluKGdbMF0sZSxuKTtnWzFdPU1hdGgubWluKGdbMV0sdCxvKTtnWzJdPU1hdGgubWF4KGdbMl0sZSxuKTtnWzNdPU1hdGgubWF4KGdbM10sdCxvKX1lbHNlIGc9W01hdGgubWluKGUsbiksTWF0aC5taW4odCxvKSxNYXRoLm1heChlLG4pLE1hdGgubWF4KHQsbyldO3RoaXMuI2UoZSxpLHIsbix0LGEscyxvLDMqKDMqKGktciktZStuKSw2KihlLTIqaStyKSwzKihpLWUpLGcpO3RoaXMuI2UoZSxpLHIsbix0LGEscyxvLDMqKDMqKGEtcyktdCtvKSw2Kih0LTIqYStzKSwzKihhLXQpLGcpO3JldHVybiBnfX1jb25zdCBJdD1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcoZSl7aWYoZVswXT49IsOvIil7bGV0IHQ7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXt0PSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe3Q9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKHQ9InV0Zi04Iik7aWYodCl0cnl7Y29uc3QgaT1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxhPXN0cmluZ1RvQnl0ZXMoZSkscj1pLmRlY29kZShhKTtyZXR1cm4gci5pbmNsdWRlcygiGyIpP3IucmVwbGFjZUFsbCgvXHgxYlteXHgxYl0qKD86XHgxYnwkKS9nLCIiKTpyfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChpKTtpZigyNz09PXIpe2Zvcig7KytpPGEmJjI3IT09ZS5jaGFyQ29kZUF0KGkpOyk7Y29udGludWV9Y29uc3Qgcz1JdFtyXTt0LnB1c2gocz9TdHJpbmcuZnJvbUNoYXJDb2RlKHMpOmUuY2hhckF0KGkpKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX1mdW5jdGlvbiBpc0FycmF5RXF1YWwoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylpZihlW2ldIT09dFtpXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKGU9bmV3IERhdGUpe3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9bGV0IGN0PW51bGwsQ3Q9bnVsbDtjb25zdCBodD0wLGx0PTEsQnQ9MixRdD0zLEV0PTQsdXQ9NSxkdD02LGZ0PTcscHQ9ODtfX3dlYnBhY2tfcmVxdWlyZV9fKDMyMTUpO2NvbnN0IG10PVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIikseXQ9U3ltYm9sKCJFT0YiKTtsZXQgd3Q9T2JqZWN0LmNyZWF0ZShudWxsKSxidD1PYmplY3QuY3JlYXRlKG51bGwpLER0PU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBidFtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiB3dFtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IEZ0PWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gRnR9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9tYXA9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPUZ0fWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxpKXtsZXQgYT10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXBbdF07dm9pZCAwPT09YSYmdm9pZCAwIT09aSYmKGE9dGhpcy5fbWFwW2ldKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWFzeW5jIGdldEFzeW5jKGUsdCxpKXtsZXQgYT10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXBbdF07dm9pZCAwPT09YSYmdm9pZCAwIT09aSYmKGE9dGhpcy5fbWFwW2ldKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOmF9Z2V0QXJyYXkoZSx0LGkpe2xldCBhPXRoaXMuX21hcFtlXTtpZih2b2lkIDA9PT1hJiZ2b2lkIDAhPT10KXthPXRoaXMuX21hcFt0XTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXBbaV0pfWEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKGE9dGhpcy54cmVmLmZldGNoKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Z2V0S2V5cygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApfWdldFJhd1ZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX21hcCl9c2V0KGUsdCl7dGhpcy5fbWFwW2VdPXR9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuZ2V0KHQpKX1zdGF0aWMgZ2V0IGVtcHR5KCl7Y29uc3QgZT1uZXcgRGljdChudWxsKTtlLnNldD0oZSx0KT0+e3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYHNldGAgb24gdGhlIGVtcHR5IGRpY3Rpb25hcnkuIil9O3JldHVybiBzaGFkb3codGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6aT0hMX0pe2NvbnN0IGE9bmV3IERpY3QoZSkscj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1yLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Iuc2V0KHQsZSl9ZWxzZSBpZighKGkmJmEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2goYSl9Zm9yKGNvbnN0W3QsaV1vZiByKXtpZigxPT09aS5sZW5ndGh8fCEoaVswXWluc3RhbmNlb2YgRGljdCkpe2EuX21hcFt0XT1pWzBdO2NvbnRpbnVlfWNvbnN0IHI9bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgaSlmb3IoY29uc3RbdCxpXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09ci5fbWFwW3RdJiYoci5fbWFwW3RdPWkpO3Iuc2l6ZT4wJiYoYS5fbWFwW3RdPXIpfXIuY2xlYXIoKTtyZXR1cm4gYS5zaXplPjA/YTpEaWN0LmVtcHR5fWNsb25lKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdCB0IG9mIHRoaXMuZ2V0S2V5cygpKWUuc2V0KHQsdGhpcy5nZXRSYXcodCkpO3JldHVybiBlfX1jbGFzcyBSZWZ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm51bT1lO3RoaXMuZ2VuPXR9dG9TdHJpbmcoKXtyZXR1cm4gMD09PXRoaXMuZ2VuP2Ake3RoaXMubnVtfVJgOmAke3RoaXMubnVtfVIke3RoaXMuZ2VufWB9c3RhdGljIGZyb21TdHJpbmcoZSl7Y29uc3QgdD1EdFtlXTtpZih0KXJldHVybiB0O2NvbnN0IGk9L14oXGQrKVIoXGQqKSQvLmV4ZWMoZSk7cmV0dXJuIGkmJiIwIiE9PWlbMV0/RHRbZV09bmV3IFJlZihwYXJzZUludChpWzFdKSxpWzJdP3BhcnNlSW50KGlbMl0pOjApOm51bGx9c3RhdGljIGdldChlLHQpe2NvbnN0IGk9MD09PXQ/YCR7ZX1SYDpgJHtlfVIke3R9YDtyZXR1cm4gRHRbaV18fD1uZXcgUmVmKGUsdCl9fWNsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGU/Ll9zZXQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fc2V0LmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlKXt0aGlzLl9zZXQuYWRkKGUudG9TdHJpbmcoKSl9cmVtb3ZlKGUpe3RoaXMuX3NldC5kZWxldGUoZS50b1N0cmluZygpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9zZXQudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9zZXQuY2xlYXIoKX19Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX0qaXRlbXMoKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtSZWYuZnJvbVN0cmluZyhlKSx0XX19ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIENtZCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59Y2xhc3MgQmFzZVN0cmVhbXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RyZWFtJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVN0cmVhbS4iKX1nZXQgbGVuZ3RoKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgbGVuZ3RoYCBhY2Nlc3NlZCIpfWdldCBpc0VtcHR5KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgaXNFbXB0eWAgYWNjZXNzZWQiKX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe3JldHVybiB0aGlzLmdldEJ5dGVzKGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGFzeW5jR2V0Qnl0ZXNgIGNhbGxlZCIpfWdldCBpc0FzeW5jKCl7cmV0dXJuITF9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuITF9cGVla0J5dGUoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpOy0xIT09ZSYmdGhpcy5wb3MtLTtyZXR1cm4gZX1wZWVrQnl0ZXMoZSl7Y29uc3QgdD10aGlzLmdldEJ5dGVzKGUpO3RoaXMucG9zLT10Lmxlbmd0aDtyZXR1cm4gdH1nZXRVaW50MTYoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpLHQ9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/LTE6KGU8PDgpK3R9Z2V0SW50MzIoKXtyZXR1cm4odGhpcy5nZXRCeXRlKCk8PDI0KSsodGhpcy5nZXRCeXRlKCk8PDE2KSsodGhpcy5nZXRCeXRlKCk8PDgpK3RoaXMuZ2V0Qnl0ZSgpfWdldEJ5dGVSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVSYW5nZWAgY2FsbGVkIil9Z2V0U3RyaW5nKGUpe3JldHVybiBieXRlc1RvU3RyaW5nKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fWNvbnN0IFN0PS9eWzEtOV1cLlxkJC87ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyBvdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBNaXNzaW5nIGRhdGEgWyR7ZX0sICR7dH0pYCwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKTt0aGlzLmJlZ2luPWU7dGhpcy5lbmQ9dH19Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiUGFyc2VyRU9GRXhjZXB0aW9uIil9fWNsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBvdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IGk9MDtmb3IobGV0IGE9MDthPHQ7YSsrKWkrPWVbYV0uYnl0ZUxlbmd0aDtjb25zdCBhPW5ldyBVaW50OEFycmF5KGkpO2xldCByPTA7Zm9yKGxldCBpPTA7aTx0O2krKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW2ldKTthLnNldCh0LHIpO3IrPXQuYnl0ZUxlbmd0aH1yZXR1cm4gYX1mdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6aT0hMSxzdG9wV2hlbkZvdW5kOmE9ITB9KXtsZXQgcjtjb25zdCBzPW5ldyBSZWZTZXQ7Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmKCFlLm9iaklkfHwhcy5oYXMoZS5vYmpJZCkpOyl7ZS5vYmpJZCYmcy5wdXQoZS5vYmpJZCk7Y29uc3Qgbj1pP2UuZ2V0QXJyYXkodCk6ZS5nZXQodCk7aWYodm9pZCAwIT09bil7aWYoYSlyZXR1cm4gbjsocnx8PVtdKS5wdXNoKG4pfWU9ZS5nZXQoIlBhcmVudCIpfXJldHVybiByfWNvbnN0IGt0PVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gdG9Sb21hbk51bWVyYWxzKGUsdD0hMSl7YXNzZXJ0KE51bWJlci5pc0ludGVnZXIoZSkmJmU+MCwiVGhlIG51bWJlciBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiIpO2NvbnN0IGk9W107bGV0IGE7Zm9yKDtlPj0xZTM7KXtlLT0xZTM7aS5wdXNoKCJNIil9YT1lLzEwMHwwO2UlPTEwMDtpLnB1c2goa3RbYV0pO2E9ZS8xMHwwO2UlPTEwO2kucHVzaChrdFsxMCthXSk7aS5wdXNoKGt0WzIwK2VdKTtjb25zdCByPWkuam9pbigiIik7cmV0dXJuIHQ/ci50b0xvd2VyQ2FzZSgpOnJ9ZnVuY3Rpb24gbG9nMihlKXtyZXR1cm4gZTw9MD8wOk1hdGguY2VpbChNYXRoLmxvZzIoZSkpfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeSgoZT0+Im51bWJlciI9PXR5cGVvZiBlKSl9ZnVuY3Rpb24gbG9va3VwTWF0cml4KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw2KT9lOnR9ZnVuY3Rpb24gbG9va3VwUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/ZTp0fWZ1bmN0aW9uIGxvb2t1cE5vcm1hbFJlY3QoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDQpP1V0aWwubm9ybWFsaXplUmVjdChlKTp0fWZ1bmN0aW9uIHBhcnNlWEZBUGF0aChlKXtjb25zdCB0PS8oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoKGU9Pntjb25zdCBpPWUubWF0Y2godCk7cmV0dXJuIGk/e25hbWU6aVsxXSxwb3M6cGFyc2VJbnQoaVsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSkpfWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjwzM3x8cj4xMjZ8fDM1PT09cnx8NDA9PT1yfHw0MT09PXJ8fDYwPT09cnx8NjI9PT1yfHw5MT09PXJ8fDkzPT09cnx8MTIzPT09cnx8MTI1PT09cnx8NDc9PT1yfHwzNz09PXIpe2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgIyR7ci50b1N0cmluZygxNil9YCk7aT1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtpPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIGVzY2FwZVN0cmluZyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8oWygpXFxcblxyXSkvZywoZT0+IlxuIj09PWU/IlxcbiI6IlxyIj09PWU/IlxcciI6YFxcJHtlfWApKX1mdW5jdGlvbiBfY29sbGVjdEpTKGUsdCxpLGEpe2lmKCFlKXJldHVybjtsZXQgcj1udWxsO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKXJldHVybjtyPWU7YS5wdXQocik7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxpLGEpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe2lmKGlzTmFtZShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IGE7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YT10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKGE9dCk7YSYmPXN0cmluZ1RvUERGU3RyaW5nKGEpLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmaS5wdXNoKGEpfV9jb2xsZWN0SlMoZS5nZXRSYXcoIk5leHQiKSx0LGksYSl9ciYmYS5yZW1vdmUocil9ZnVuY3Rpb24gY29sbGVjdEFjdGlvbnMoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkFBIixzdG9wV2hlbkZvdW5kOiExfSk7aWYocilmb3IobGV0IHQ9ci5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgcz1yW3RdO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdCB0IG9mIHMuZ2V0S2V5cygpKXtjb25zdCByPWlbdF07aWYoIXIpY29udGludWU7Y29uc3Qgbj1bXTtfY29sbGVjdEpTKHMuZ2V0UmF3KHQpLGUsbixuZXcgUmVmU2V0KTtuLmxlbmd0aD4wJiYoYVtyXT1uKX19aWYodC5oYXMoIkEiKSl7Y29uc3QgaT1bXTtfY29sbGVjdEpTKHQuZ2V0KCJBIiksZSxpLG5ldyBSZWZTZXQpO2kubGVuZ3RoPjAmJihhLkFjdGlvbj1pKX1yZXR1cm4gb2JqZWN0U2l6ZShhKT4wP2E6bnVsbH1jb25zdCBSdD17NjA6IiZsdDsiLDYyOiImZ3Q7IiwzODoiJmFtcDsiLDM0OiImcXVvdDsiLDM5OiImYXBvczsifTtmdW5jdGlvbipjb2RlUG9pbnRJdGVyKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lLmNvZGVQb2ludEF0KHQpO2k+NTUyOTUmJihpPDU3MzQ0fHxpPjY1NTMzKSYmdCsrO3lpZWxkIGl9fWZ1bmN0aW9uIGVuY29kZVRvWG1sU3RyaW5nKGUpe2NvbnN0IHQ9W107bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jb2RlUG9pbnRBdChhKTtpZigzMjw9ciYmcjw9MTI2KXtjb25zdCBzPVJ0W3JdO2lmKHMpe2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChzKTtpPWErMX19ZWxzZXtpPGEmJnQucHVzaChlLnN1YnN0cmluZyhpLGEpKTt0LnB1c2goYCYjeCR7ci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX07YCk7cj41NTI5NSYmKHI8NTczNDR8fHI+NjU1MzMpJiZhKys7aT1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtpPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHZhbGlkYXRlRm9udE5hbWUoZSx0PSExKXtjb25zdCBpPS9eKCJ8JykuKigifCcpJC8uZXhlYyhlKTtpZihpJiZpWzFdPT09aVsyXSl7aWYobmV3IFJlZ0V4cChgW15cXFxcXSR7aVsxXX1gKS50ZXN0KGUuc2xpY2UoMSwtMSkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIHVuZXNjYXBlZCAke2lbMV19OiAke2V9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBpIG9mIGUuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoaSl8fCEvXltcdy1cXF0rJC8udGVzdChpKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyBpbnZhbGlkIDxjdXN0b20taWRlbnQ+OiAke2V9LmApO3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHZhbGlkYXRlQ1NTRm9udChlKXtjb25zdCB0PW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIzMDAiLCI0MDAiLCI1MDAiLCI2MDAiLCI3MDAiLCI4MDAiLCI5MDAiLCIxMDAwIiwibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiXSkse2ZvbnRGYW1pbHk6aSxmb250V2VpZ2h0OmEsaXRhbGljQW5nbGU6cn09ZTtpZighdmFsaWRhdGVGb250TmFtZShpLCEwKSlyZXR1cm4hMTtjb25zdCBzPWE/YS50b1N0cmluZygpOiIiO2UuZm9udFdlaWdodD10LmhhcyhzKT9zOiI0MDAiO2NvbnN0IG49cGFyc2VGbG9hdChyKTtlLml0YWxpY0FuZ2xlPWlzTmFOKG4pfHxuPC05MHx8bj45MD8iMTQiOnIudG9TdHJpbmcoKTtyZXR1cm4hMH1mdW5jdGlvbiByZWNvdmVySnNVUkwoZSl7Y29uc3QgdD1uZXcgUmVnRXhwKCJeXFxzKigiK1siYXBwLmxhdW5jaFVSTCIsIndpbmRvdy5vcGVuIiwieGZhLmhvc3QuZ290b1VSTCJdLmpvaW4oInwiKS5yZXBsYWNlQWxsKCIuIiwiXFwuIikrIilcXCgoPzonfFwiKShbXidcIl0qKSg/Oid8XCIpKD86LFxccyooXFx3KylcXCl8XFwpKSIsImkiKS5leGVjKGUpO2lmKHQ/LlsyXSl7Y29uc3QgZT10WzJdO2xldCBpPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihpPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93Oml9fXJldHVybiBudWxsfWZ1bmN0aW9uIG51bWJlclRvU3RyaW5nKGUpe2lmKE51bWJlci5pc0ludGVnZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoKTtjb25zdCB0PU1hdGgucm91bmQoMTAwKmUpO3JldHVybiB0JTEwMD09MD8odC8xMDApLnRvU3RyaW5nKCk6dCUxMD09MD9lLnRvRml4ZWQoMSk6ZS50b0ZpeGVkKDIpfWZ1bmN0aW9uIGdldE5ld0Fubm90YXRpb25zTWFwKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbaSxhXW9mIGUpe2lmKCFpLnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5nZXQoYS5wYWdlSW5kZXgpO2lmKCFlKXtlPVtdO3Quc2V0KGEucGFnZUluZGV4LGUpfWUucHVzaChhKX1yZXR1cm4gdC5zaXplPjA/dDpudWxsfWZ1bmN0aW9uIGlzQXNjaWkoZSl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KGUpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KGkpO3QucHVzaCgoYT4+OCYyNTUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIiksKDI1NSZhKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2U3RyaW5nKGUsdD0hMSl7Y29uc3QgaT1bXTt0JiZpLnB1c2goIsO+w78iKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KHQpO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZhKSl9cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LGkpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxpXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxpXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1mdW5jdGlvbiBnZXRTaXplSW5CeXRlcyhlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGguY2VpbChNYXRoLmxvZzIoMStlKSkvOCl9Y2xhc3MgU3RyZWFtIGV4dGVuZHMgQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigpO3RoaXMuYnl0ZXM9ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/ZTpuZXcgVWludDhBcnJheShlKTt0aGlzLnN0YXJ0PXR8fDA7dGhpcy5wb3M9dGhpcy5zdGFydDt0aGlzLmVuZD10K2l8fHRoaXMuYnl0ZXMubGVuZ3RoO3RoaXMuZGljdD1hfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmQtdGhpcy5zdGFydH1nZXQgaXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5sZW5ndGh9Z2V0Qnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsaT10aGlzLnBvcyxhPXRoaXMuZW5kO2lmKCFlKXJldHVybiB0LnN1YmFycmF5KGksYSk7bGV0IHI9aStlO3I+YSYmKHI9YSk7dGhpcy5wb3M9cjtyZXR1cm4gdC5zdWJhcnJheShpLHIpfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9cmVzZXQoKXt0aGlzLnBvcz10aGlzLnN0YXJ0fW1vdmVTdGFydCgpe3RoaXMuc3RhcnQ9dGhpcy5wb3N9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ5dGVzLmJ1ZmZlcixlLHQsaSl9fWNsYXNzIFN0cmluZ1N0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzdHJpbmdUb0J5dGVzKGUpKX19Y2xhc3MgTnVsbFN0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBVaW50OEFycmF5KDApKX19Y2xhc3MgQ2h1bmtlZFN0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoZSksMCxlLG51bGwpO3RoaXMuY2h1bmtTaXplPXQ7dGhpcy5fbG9hZGVkQ2h1bmtzPW5ldyBTZXQ7dGhpcy5udW1DaHVua3M9TWF0aC5jZWlsKGUvdCk7dGhpcy5tYW5hZ2VyPWk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPS0xfWdldE1pc3NpbmdDaHVua3MoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGk9dGhpcy5udW1DaHVua3M7dDxpOysrdCl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpfHxlLnB1c2godCk7cmV0dXJuIGV9Z2V0IG51bUNodW5rc0xvYWRlZCgpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3Muc2l6ZX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N9b25SZWNlaXZlRGF0YShlLHQpe2NvbnN0IGk9dGhpcy5jaHVua1NpemU7aWYoZSVpIT0wKXRocm93IG5ldyBFcnJvcihgQmFkIGJlZ2luIG9mZnNldDogJHtlfWApO2NvbnN0IGE9ZSt0LmJ5dGVMZW5ndGg7aWYoYSVpIT0wJiZhIT09dGhpcy5ieXRlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBCYWQgZW5kIG9mZnNldDogJHthfWApO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KHQpLGUpO2NvbnN0IHI9TWF0aC5mbG9vcihlL2kpLHM9TWF0aC5mbG9vcigoYS0xKS9pKSsxO2ZvcihsZXQgZT1yO2U8czsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEoZSl7bGV0IHQ9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg7Y29uc3QgaT1NYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KGUpLHQpO3QrPWUuYnl0ZUxlbmd0aDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD10O2NvbnN0IGE9dD49dGhpcy5lbmQ/dGhpcy5udW1DaHVua3M6TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTtmb3IobGV0IGU9aTtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9ZW5zdXJlQnl0ZShlKXtpZihlPHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCB0PU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoISh0PnRoaXMubnVtQ2h1bmtzKSYmdCE9PXRoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bmspe2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpKXRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBpPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoaT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3QgYT1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IHI9aTtyPGE7KytyKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHIpKXRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihlLHQpfW5leHRFbXB0eUNodW5rKGUpe2NvbnN0IHQ9dGhpcy5udW1DaHVua3M7Zm9yKGxldCBpPTA7aTx0OysraSl7Y29uc3QgYT0oZStpKSV0O2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGEpKXJldHVybiBhfXJldHVybiBudWxsfWhhc0NodW5rKGUpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2lmKGU+PXRoaXMuZW5kKXJldHVybi0xO2U+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7cmV0dXJuIHRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSl7YT50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShpLGEpO3JldHVybiB0LnN1YmFycmF5KGksYSl9bGV0IHI9aStlO3I+YSYmKHI9YSk7cj50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShpLHIpO3RoaXMucG9zPXI7cmV0dXJuIHQuc3ViYXJyYXkoaSxyKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsdCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3Q/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO2Z1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKXt9Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZS5nZXRNaXNzaW5nQ2h1bmtzPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxpPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEsYT1bXTtmb3IobGV0IGU9dDtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl8fGEucHVzaChlKTtyZXR1cm4gYX07T2JqZWN0LmRlZmluZVByb3BlcnR5KENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLCJpc0RhdGFMb2FkZWQiLHtnZXQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc3x8MD09PXRoaXMuZ2V0TWlzc2luZ0NodW5rcygpLmxlbmd0aH0sY29uZmlndXJhYmxlOiEwfSk7Y29uc3QgYT1uZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbTthLnBvcz1hLnN0YXJ0PWU7YS5lbmQ9ZSt0fHx0aGlzLmVuZDthLmRpY3Q9aTtyZXR1cm4gYX1nZXRCYXNlU3RyZWFtcygpe3JldHVyblt0aGlzXX19Y2xhc3MgQ2h1bmtlZFN0cmVhbU1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxlbmd0aD10Lmxlbmd0aDt0aGlzLmNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuc3RyZWFtPW5ldyBDaHVua2VkU3RyZWFtKHRoaXMubGVuZ3RoLHRoaXMuY2h1bmtTaXplLHRoaXMpO3RoaXMucGRmTmV0d29ya1N0cmVhbT1lO3RoaXMuZGlzYWJsZUF1dG9GZXRjaD10LmRpc2FibGVBdXRvRmV0Y2g7dGhpcy5tc2dIYW5kbGVyPXQubXNnSGFuZGxlcjt0aGlzLmN1cnJSZXF1ZXN0SWQ9MDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLl9yZXF1ZXN0c0J5Q2h1bms9bmV3IE1hcDt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdD1uZXcgTWFwO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5hYm9ydGVkPSExO3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHk9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBpPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2kuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChpLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBhPVtdLHI9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPSh7dmFsdWU6cyxkb25lOm59KT0+e3RyeXtpZihuKXtjb25zdCB0PWFycmF5QnVmZmVyc1RvQnl0ZXMoYSk7YT1udWxsO2UodCk7cmV0dXJufXIrPXMuYnl0ZUxlbmd0aDtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkJiZ0aGlzLm9uUHJvZ3Jlc3Moe2xvYWRlZDpyfSk7YS5wdXNoKHMpO2kucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS50aGVuKCh0PT57dGhpcy5hYm9ydGVkfHx0aGlzLm9uUmVjZWl2ZURhdGEoe2NodW5rOnQsYmVnaW46ZX0pfSkpfXJlcXVlc3RBbGxDaHVua3MoZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLGk9bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQsaSk7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8aS5hZGQodCk7aWYoMD09PWkuc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgYT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxhKTtjb25zdCByPVtdO2Zvcihjb25zdCBlIG9mIGkpe2xldCBpPXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYoIWkpe2k9W107dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNldChlLGkpO3IucHVzaChlKX1pLnB1c2godCl9aWYoci5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLmdyb3VwQ2h1bmtzKHIpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5iZWdpbkNodW5rKnRoaXMuY2h1bmtTaXplLGk9TWF0aC5taW4odC5lbmRDaHVuayp0aGlzLmNodW5rU2l6ZSx0aGlzLmxlbmd0aCk7dGhpcy5zZW5kUmVxdWVzdChlLGkpLmNhdGNoKGEucmVqZWN0KX19cmV0dXJuIGEucHJvbWlzZS5jYXRjaCgoZT0+e2lmKCF0aGlzLmFib3J0ZWQpdGhyb3cgZX0pKX1nZXRTdHJlYW0oKXtyZXR1cm4gdGhpcy5zdHJlYW19cmVxdWVzdFJhbmdlKGUsdCl7dD1NYXRoLm1pbih0LHRoaXMubGVuZ3RoKTtjb25zdCBpPXRoaXMuZ2V0QmVnaW5DaHVuayhlKSxhPXRoaXMuZ2V0RW5kQ2h1bmsodCkscj1bXTtmb3IobGV0IGU9aTtlPGE7KytlKXIucHVzaChlKTtyZXR1cm4gdGhpcy5fcmVxdWVzdENodW5rcyhyKX1yZXF1ZXN0UmFuZ2VzKGU9W10pe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT10aGlzLmdldEJlZ2luQ2h1bmsoaS5iZWdpbiksYT10aGlzLmdldEVuZENodW5rKGkuZW5kKTtmb3IobGV0IGk9ZTtpPGE7KytpKXQuaW5jbHVkZXMoaSl8fHQucHVzaChpKX10LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0pKTtyZXR1cm4gdGhpcy5fcmVxdWVzdENodW5rcyh0KX1ncm91cENodW5rcyhlKXtjb25zdCB0PVtdO2xldCBpPS0xLGE9LTE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7KytyKXtjb25zdCBzPWVbcl07aTwwJiYoaT1zKTtpZihhPj0wJiZhKzEhPT1zKXt0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazphKzF9KTtpPXN9cisxPT09ZS5sZW5ndGgmJnQucHVzaCh7YmVnaW5DaHVuazppLGVuZENodW5rOnMrMX0pO2E9c31yZXR1cm4gdH1vblByb2dyZXNzKGUpe3RoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUrZS5sb2FkZWQsdG90YWw6dGhpcy5sZW5ndGh9KX1vblJlY2VpdmVEYXRhKGUpe2NvbnN0IHQ9ZS5jaHVuayxpPXZvaWQgMD09PWUuYmVnaW4sYT1pP3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoOmUuYmVnaW4scj1hK3QuYnl0ZUxlbmd0aCxzPU1hdGguZmxvb3IoYS90aGlzLmNodW5rU2l6ZSksbj1yPHRoaXMubGVuZ3RoP01hdGguZmxvb3Ioci90aGlzLmNodW5rU2l6ZSk6TWF0aC5jZWlsKHIvdGhpcy5jaHVua1NpemUpO2lmKGkpe3RoaXMuc3RyZWFtLm9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YSh0KTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD1yfWVsc2UgdGhpcy5zdHJlYW0ub25SZWNlaXZlRGF0YShhLHQpO3RoaXMuc3RyZWFtLmlzRGF0YUxvYWRlZCYmdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5yZXNvbHZlKHRoaXMuc3RyZWFtKTtjb25zdCBvPVtdO2ZvcihsZXQgZT1zO2U8bjsrK2Upe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZih0KXt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZGVsZXRlKGUpO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LmdldChpKTt0LmhhcyhlKSYmdC5kZWxldGUoZSk7dC5zaXplPjB8fG8ucHVzaChpKX19fWlmKCF0aGlzLmRpc2FibGVBdXRvRmV0Y2gmJjA9PT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2l6ZSl7bGV0IGU7aWYoMT09PXRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCl7Y29uc3QgdD10aGlzLnN0cmVhbS5udW1DaHVua3MtMTt0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8KGU9dCl9ZWxzZSBlPXRoaXMuc3RyZWFtLm5leHRFbXB0eUNodW5rKG4pO051bWJlci5pc0ludGVnZXIoZSkmJnRoaXMuX3JlcXVlc3RDaHVua3MoW2VdKX1mb3IoY29uc3QgZSBvZiBvKXtjb25zdCB0PXRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmdldChlKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5kZWxldGUoZSk7dC5yZXNvbHZlKCl9dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZSx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uRXJyb3IoZSl7dGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5yZWplY3QoZSl9Z2V0QmVnaW5DaHVuayhlKXtyZXR1cm4gTWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKX1nZXRFbmRDaHVuayhlKXtyZXR1cm4gTWF0aC5mbG9vcigoZS0xKS90aGlzLmNodW5rU2l6ZSkrMX1hYm9ydChlKXt0aGlzLmFib3J0ZWQ9ITA7dGhpcy5wZGZOZXR3b3JrU3RyZWFtPy5jYW5jZWxBbGxSZXF1ZXN0cyhlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSl0LnJlamVjdChlKX19X193ZWJwYWNrX3JlcXVpcmVfXyg0NTIwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk0NzkpLF9fd2VicGFja19yZXF1aXJlX18oMjU3NyksX193ZWJwYWNrX3JlcXVpcmVfXyg4ODcyKTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGksMCk7cmV0dXJuIGl9Z2V0UmdiSXRlbShlLHQsaSxhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsaSxhLHIscyxuLG8sZyl7Y29uc3QgYz10Kmk7bGV0IEM9bnVsbDtjb25zdCBoPTE8PG4sbD1pIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG4pKUM9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZjPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9bjw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxpLDAsbiwwKTtpZihsKXtDPW5ldyBVaW50OEFycmF5KDMqYyk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGM7Kyt0KXtjb25zdCBhPTMqb1t0XTtDW2UrK109aVthXTtDW2UrK109aVthKzFdO0NbZSsrXT1pW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGM7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109aVtyXTtlW3QrK109aVtyKzFdO2VbdCsrXT1pW3IrMl07dCs9Z319fWVsc2UgaWYobCl7Qz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypjKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYyxDLDAsbiwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLG4sZyk7aWYoQylpZihsKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsaSxhLHIscyxuKXtuPTEhPT1uPzA6bjtjb25zdCBvPWkvcixnPWEvcztsZXQgYyxDPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksbD0zKmk7Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9TWF0aC5mbG9vcihpKmcpKmw7Zm9yKGxldCBpPTA7aTxyO2krKyl7Yz1hK2hbaV07dFtDKytdPWVbYysrXTt0W0MrK109ZVtjKytdO3RbQysrXT1lW2MrK107Qys9bn19fShDLGUsdCxpLGEscixnKTtlbHNle2xldCB0PTAsaT0wO2ZvcihsZXQgcj0wLG49YSpzO3I8bjtyKyspe2VbdCsrXT1DW2krK107ZVt0KytdPUNbaSsrXTtlW3QrK109Q1tpKytdO3QrPWd9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxpLGEpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IHIscztpZihlIGluc3RhbmNlb2YgUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBOYW1lJiYocj1lLm5hbWUpOyhyfHxzKSYmaS5zZXQocixzLGEpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGkpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGE9aS5nZXRCeVJlZihlKTtpZihhKXJldHVybiBhO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWkuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixzKTtyZXR1cm4gc31zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQoZSx0LHIpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbj10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixuKTtyZXR1cm4gbn1zdGF0aWMgX3BhcnNlKGUsdCxpPW51bGwsYSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9aS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLl9wYXJzZShzLHQsaSxhKTtlPXM7YnJlYWt9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCByPXQuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBzLG4sbyxnLGMsQztzd2l0Y2gocil7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJDYWxHcmF5IjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtDPXMuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgQ2FsR3JheUNTKGcsYyxDKTtjYXNlIkNhbFJHQiI6cz10LmZldGNoSWZSZWYoZVsxXSk7Zz1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Qz1zLmdldEFycmF5KCJHYW1tYSIpO2NvbnN0IGg9cy5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBDYWxSR0JDUyhnLGMsQyxoKTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBsPXQuZmV0Y2hJZlJlZihlWzFdKS5kaWN0O249bC5nZXQoIk4iKTtjb25zdCBRPWwuZ2V0KCJBbHRlcm5hdGUiKTtpZihRKXtjb25zdCBlPXRoaXMuX3BhcnNlKFEsdCxpLGEpO2lmKGUubnVtQ29tcHM9PT1uKXJldHVybiBlO3dhcm4oIklDQ0Jhc2VkIGNvbG9yIHNwYWNlOiBJZ25vcmluZyBpbmNvcnJlY3QgL0FsdGVybmF0ZSBlbnRyeS4iKX1pZigxPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7aWYoMz09PW4pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7aWYoND09PW4pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2JyZWFrO2Nhc2UiUGF0dGVybiI6bz1lWzFdfHxudWxsO28mJihvPXRoaXMuX3BhcnNlKG8sdCxpLGEpKTtyZXR1cm4gbmV3IFBhdHRlcm5DUyhvKTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6bz10aGlzLl9wYXJzZShlWzFdLHQsaSxhKTtjb25zdCBFPXQuZmV0Y2hJZlJlZihlWzJdKSsxLHU9dC5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKG8sRSx1KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3QgZD10LmZldGNoSWZSZWYoZVsxXSk7bj1BcnJheS5pc0FycmF5KGQpP2QubGVuZ3RoOjE7bz10aGlzLl9wYXJzZShlWzJdLHQsaSxhKTtjb25zdCBmPWEuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgQWx0ZXJuYXRlQ1MobixvLGYpO2Nhc2UiTGFiIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtjb25zdCBwPXMuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBMYWJDUyhnLGMscCk7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7cn1gKX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpe3dhcm4oIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybiBzaGFkb3codGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX0sZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLEM9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLGw9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1sP3I6MDtjb25zdCBFPWw/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkoQyppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShDKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxDO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9Q319bHx8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTt0aGlzLmhpZ2hWYWw9dDtjb25zdCBhPWUubnVtQ29tcHMqdDt0aGlzLmxvb2t1cD1uZXcgVWludDhBcnJheShhKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1pLmdldEJ5dGVzKGEpO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7aX1gKTtmb3IobGV0IGU9MDtlPGE7KytlKXRoaXMubG9va3VwW2VdPTI1NSZpLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLmJhc2UubnVtQ29tcHMscz1lW3RdKnI7dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxzLDEsaSxhLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89dGhpcy5iYXNlLGc9by5udW1Db21wcyxjPW8uZ2V0T3V0cHV0TGVuZ3RoKGcsbiksQz10aGlzLmxvb2t1cDtmb3IobGV0IHM9MDtzPGk7KytzKXtjb25zdCBpPWVbdCsrXSpnO28uZ2V0UmdiQnVmZmVyKEMsaSwxLGEsciw4LG4pO3IrPWN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9MjU1KmVbdF07aVthXT1pW2ErMV09aVthKzJdPXJ9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGc9dCxjPXI7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1vKmVbZysrXTthW2MrK109dDthW2MrK109dDthW2MrK109dDtjKz1ufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtpW2FdPTI1NSplW3RdO2lbYSsxXT0yNTUqZVt0KzFdO2lbYSsyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtpZig4PT09cyYmMD09PW4pe2Euc2V0KGUuc3ViYXJyYXkodCx0KzMqaSkscik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGc9dCxjPXI7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtjKytdPW8qZVtnKytdO2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VSZ2JhQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQkEiLDQpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiA0KmV9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9I3QoZSx0LGksYSxyKXtjb25zdCBzPWVbdF0qaSxuPWVbdCsxXSppLG89ZVt0KzJdKmksZz1lW3QrM10qaTthW3JdPTI1NStzKigtNC4zODczMzIzODQ2MDk5ODgqcys1NC40ODYxNTE5NDE4OTE3NipuKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmctMjg1LjIzMzEwMjYxMzcwMDQpK24qKDEuNzE0OTc2MzQ3NzM2MjEzNCpuLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqZy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypnKzE3LjUxMTkyNzA4NDE4MTMpK2cqKC0yMS44NjEyMjE0NzQ2MzYwNSpnLTE4OS40ODE4MDgzNTkyMjc0Nyk7YVtyKzFdPTI1NStzKig4Ljg0MTA0MTQyMjAzNjE0OSpzKzYwLjExODAyNzA0NTU5NzM2NipuKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmctNzkuMjk3MDg0NDgxNjU0OCkrbiooLTE1LjMxMDM2MTMwNjk2NzgxNypuKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipnLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpnLTI0Ljg2NzQxNTgyNTU1ODc4KStnKigtMjAuNzM3MzI1NDcxMTgxMDM0KmctMTg3LjgwNDUzNzA5NzE5NTc4KTthW3IrMl09MjU1K3MqKC44ODQyNTIyNDMwMDAzMjk2KnMrOC4wNzg2Nzc1MDMxMTI5MjgqbiszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpnLTE0LjE4MzU3Njc5OTY3MzI4NikrbiooMTAuNDk1OTMyNzM0MzIwNzIqbis2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpnLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmctMTkzLjU4MjA5MzU2ODYxNTA1KStnKigtMjIuMzM4MTY4MDczMDk4ODYqZy0xODAuMTI2MTM5NzQ3MDgzNjcpfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7cysrKXt0aGlzLiN0KGUsdCxvLGEscik7dCs9NDtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19Y2xhc3MgQ2FsR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoIkNhbEdyYXkiLDEpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO3RoaXMuRz1pfHwxO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fHdhcm4oYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXtpbmZvKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fSN0KGUsdCxpLGEscil7Y29uc3Qgcz0oZVt0XSpyKSoqdGhpcy5HLG49dGhpcy5ZVypzLG89TWF0aC5tYXgoMjk1LjgqbioqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTtpW2FdPW87aVthKzFdPW87aVthKzJdPW99Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0xO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIENhbFJHQkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtzdGF0aWMjaT1uZXcgRmxvYXQzMkFycmF5KFsuODk1MSwuMjY2NCwtLjE2MTQsLS43NTAyLDEuNzEzNSwuMDM2NywuMDM4OSwtLjA2ODUsMS4wMjk2XSk7c3RhdGljI2E9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pO3N0YXRpYyNyPW5ldyBGbG9hdDMyQXJyYXkoWzMuMjQwNDU0MiwtMS41MzcxMzg1LC0uNDk4NTMxNCwtLjk2OTI2NiwxLjg3NjAxMDgsLjA0MTU1NiwuMDU1NjQzNCwtLjIwNDAyNTksMS4wNTcyMjUyXSk7c3RhdGljI3M9bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtzdGF0aWMjbj1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNvPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2c9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjST0oMjQvMTE2KSoqMy84O2NvbnN0cnVjdG9yKGUsdCxpLGEpe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbFJHQiIpO2NvbnN0W3IscyxuXT10aGlzLndoaXRlUG9pbnQ9ZSxbbyxnLGNdPXRoaXMuYmxhY2tQb2ludD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO1t0aGlzLkdSLHRoaXMuR0csdGhpcy5HQl09aXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtbdGhpcy5NWEEsdGhpcy5NWUEsdGhpcy5NWkEsdGhpcy5NWEIsdGhpcy5NWUIsdGhpcy5NWkIsdGhpcy5NWEMsdGhpcy5NWUMsdGhpcy5NWkNdPWF8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7aWYocjwwfHxuPDB8fDEhPT1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYobzwwfHxnPDB8fGM8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0gWyR7b30sICR7Z30sICR7Y31dLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLmJsYWNrUG9pbnQ9bmV3IEZsb2F0MzJBcnJheSgzKX1pZih0aGlzLkdSPDB8fHRoaXMuR0c8MHx8dGhpcy5HQjwwKXtpbmZvKGBJbnZhbGlkIEdhbW1hIFske3RoaXMuR1J9LCAke3RoaXMuR0d9LCAke3RoaXMuR0J9XSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkdSPXRoaXMuR0c9dGhpcy5HQj0xfX0jYyhlLHQsaSl7aVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTtpWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2lbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19I0MoZSx0LGkpe2lbMF09MSp0WzBdL2VbMF07aVsxXT0xKnRbMV0vZVsxXTtpWzJdPTEqdFsyXS9lWzJdfSNoKGUsdCxpKXtpWzBdPS45NTA0Nyp0WzBdL2VbMF07aVsxXT0xKnRbMV0vZVsxXTtpWzJdPTEuMDg4ODMqdFsyXS9lWzJdfSNsKGUpe3JldHVybiBlPD0uMDAzMTMwOD90aGlzLiNCKDAsMSwxMi45MiplKTplPj0uOTk1NTQ1MjU/MTp0aGlzLiNCKDAsMSwxLjA1NSplKiooMS8yLjQpLS4wNTUpfSNCKGUsdCxpKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LGkpKX0jUShlKXtyZXR1cm4gZTwwPy10aGlzLiNRKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOmUqQ2FsUkdCQ1MuI0l9I0UoZSx0LGkpe2lmKDA9PT1lWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPXRoaXMuI1EoMCkscj0oMS1hKS8oMS10aGlzLiNRKGVbMF0pKSxzPTEtcixuPSgxLWEpLygxLXRoaXMuI1EoZVsxXSkpLG89MS1uLGc9KDEtYSkvKDEtdGhpcy4jUShlWzJdKSksYz0xLWc7aVswXT10WzBdKnIrcztpWzFdPXRbMV0qbitvO2lbMl09dFsyXSpnK2N9I3UoZSx0LGkpe2lmKDE9PT1lWzBdJiYxPT09ZVsyXSl7aVswXT10WzBdO2lbMV09dFsxXTtpWzJdPXRbMl07cmV0dXJufWNvbnN0IGE9aTt0aGlzLiNjKENhbFJHQkNTLiNpLHQsYSk7Y29uc3Qgcj1DYWxSR0JDUy4jbjt0aGlzLiNDKGUsYSxyKTt0aGlzLiNjKENhbFJHQkNTLiNhLHIsaSl9I2QoZSx0LGkpe2NvbnN0IGE9aTt0aGlzLiNjKENhbFJHQkNTLiNpLHQsYSk7Y29uc3Qgcj1DYWxSR0JDUy4jbjt0aGlzLiNoKGUsYSxyKTt0aGlzLiNjKENhbFJHQkNTLiNhLHIsaSl9I3QoZSx0LGksYSxyKXtjb25zdCBzPXRoaXMuI0IoMCwxLGVbdF0qciksbj10aGlzLiNCKDAsMSxlW3QrMV0qciksbz10aGlzLiNCKDAsMSxlW3QrMl0qciksZz0xPT09cz8xOnMqKnRoaXMuR1IsYz0xPT09bj8xOm4qKnRoaXMuR0csQz0xPT09bz8xOm8qKnRoaXMuR0IsaD10aGlzLk1YQSpnK3RoaXMuTVhCKmMrdGhpcy5NWEMqQyxsPXRoaXMuTVlBKmcrdGhpcy5NWUIqYyt0aGlzLk1ZQypDLFE9dGhpcy5NWkEqZyt0aGlzLk1aQipjK3RoaXMuTVpDKkMsRT1DYWxSR0JDUy4jbztFWzBdPWg7RVsxXT1sO0VbMl09UTtjb25zdCB1PUNhbFJHQkNTLiNnO3RoaXMuI3UodGhpcy53aGl0ZVBvaW50LEUsdSk7Y29uc3QgZD1DYWxSR0JDUy4jbzt0aGlzLiNFKHRoaXMuYmxhY2tQb2ludCx1LGQpO2NvbnN0IGY9Q2FsUkdCQ1MuI2c7dGhpcy4jZChDYWxSR0JDUy4jcyxkLGYpO2NvbnN0IHA9Q2FsUkdCQ1MuI287dGhpcy4jYyhDYWxSR0JDUy4jcixmLHApO2lbYV09MjU1KnRoaXMuI2wocFswXSk7aVthKzFdPTI1NSp0aGlzLiNsKHBbMV0pO2lbYSsyXT0yNTUqdGhpcy4jbChwWzJdKX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LGksYSwxKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpOysrcyl7dGhpcy4jdChlLHQsYSxyLG8pO3QrPTM7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9fWNsYXNzIExhYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoIkxhYiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLmFtaW4sdGhpcy5hbWF4LHRoaXMuYm1pbix0aGlzLmJtYXhdPWl8fFstMTAwLDEwMCwtMTAwLDEwMF07W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXtpbmZvKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fSNmKGUpe3JldHVybiBlPj02LzI5P2UqKjM6MTA4Lzg0MSooZS00LzI5KX0jcChlLHQsaSxhKXtyZXR1cm4gaStlKihhLWkpL3R9I3QoZSx0LGksYSxyKXtsZXQgcz1lW3RdLG49ZVt0KzFdLG89ZVt0KzJdO2lmKCExIT09aSl7cz10aGlzLiNwKHMsaSwwLDEwMCk7bj10aGlzLiNwKG4saSx0aGlzLmFtaW4sdGhpcy5hbWF4KTtvPXRoaXMuI3AobyxpLHRoaXMuYm1pbix0aGlzLmJtYXgpfW4+dGhpcy5hbWF4P249dGhpcy5hbWF4Om48dGhpcy5hbWluJiYobj10aGlzLmFtaW4pO28+dGhpcy5ibWF4P289dGhpcy5ibWF4Om88dGhpcy5ibWluJiYobz10aGlzLmJtaW4pO2NvbnN0IGc9KHMrMTYpLzExNixjPWcrbi81MDAsQz1nLW8vMjAwLGg9dGhpcy5YVyp0aGlzLiNmKGMpLGw9dGhpcy5ZVyp0aGlzLiNmKGcpLFE9dGhpcy5aVyp0aGlzLiNmKEMpO2xldCBFLHUsZDtpZih0aGlzLlpXPDEpe0U9My4xMzM5KmgrLTEuNjE3KmwrLS40OTA2KlE7dT0tLjk3ODUqaCsxLjkxNipsKy4wMzMzKlE7ZD0uMDcyKmgrLS4yMjkqbCsxLjQwNTcqUX1lbHNle0U9My4yNDA2KmgrLTEuNTM3MipsKy0uNDk4NipRO3U9LS45Njg5KmgrMS44NzU4KmwrLjA0MTUqUTtkPS4wNTU3KmgrLS4yMDQqbCsxLjA1NypRfWFbcl09MjU1Kk1hdGguc3FydChFKTthW3IrMV09MjU1Kk1hdGguc3FydCh1KTthW3IrMl09MjU1Kk1hdGguc3FydChkKX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LCExLGksYSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89KDE8PHMpLTE7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTM7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fWZ1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGk9MDtmb3IobGV0IGE9MDthPD10O2ErKylpPWk8PDh8ZVthXTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj1pO3I+PTA7ci0tKXthKz1lW3JdK3Rbcl07ZVtyXT0yNTUmYTthPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGk9MTtmb3IobGV0IGE9dDthPj0wJiZpPjA7YS0tKXtpKz1lW2FdO2VbYV09MjU1Jmk7aT4+PTh9fWNvbnN0IE50PTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnBvcz0wO3RoaXMuZW5kPWUubGVuZ3RoO3RoaXMudG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KX1yZWFkQnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5idWZmZXJbdGhpcy5wb3MrK119cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBpPXRoaXMucmVhZEJ5dGUoKTtpZihpPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmaSk7dD10PDw3fDEyNyZpfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgaTtjb25zdCBhPXRoaXMudG1wQnVmO2xldCByPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtpPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghaSk7bGV0IHM9dCxuPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7bnw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmbjtzLS07bj4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGk9MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFeaX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGkpe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnIpO2xldCBzPW51bGw7Y29uc3Qgbj1uZXcgVWludDhBcnJheShOdCksbz1uZXcgVWludDhBcnJheShOdCksZz1uZXcgVWludDhBcnJheShOdCksYz1uZXcgVWludDhBcnJheShOdCksQz1uZXcgVWludDhBcnJheShOdCk7bGV0IGgsbDtmb3IoOyhsPWEucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPWw+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZsKXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnM9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgaT0hISgxNiZsKSxyPTE1Jmw7aWYocisxPk50KXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IFE9MSxFPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgobixyKTthLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGcscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChnLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChnLHIpO2lmKCFpKXthLnJlYWRIZXhOdW1iZXIoQyxyKTthZGRIZXgoZyxDLHIpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2lmKGkpbi5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpfWEucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGcsUSk7YS5yZWFkSGV4KGMscik7dC5tYXBPbmUoaGV4VG9JbnQoZyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxRKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKEMsUSk7YWRkSGV4KGcsQyxRKX1pbmNIZXgoYyxyKTthLnJlYWRIZXhTaWduZWQoQyxyKTthZGRIZXgoYyxDLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChuLFEpO2EucmVhZEhleE51bWJlcihvLFEpO2FkZEhleChvLG4sUSk7YS5yZWFkSGV4KGMscik7dC5tYXBCZlJhbmdlKGhleFRvSW50KG4sUSksaGV4VG9JbnQobyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxRKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4sUSk7YWRkSGV4KG4sbyxRKX1hLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9pKHMpOnR9fWNvbnN0IEd0PW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9R3Q7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGk9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtpPGU7KWkqPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGk9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoaStlKTthPWkrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoaSxhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0PW51bGwpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3QgaT1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UoaSx0KX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgaT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9aSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxpKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7bGV0IGk9MDtmb3IoY29uc3QgdCBvZiBlKWkrPXQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKGkpO3RoaXMuc3RyZWFtcz1lO3RoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUuc2hpZnQoKTtsZXQgaTt0cnl7aT10LmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcil7dGhpcy5fb25FcnJvcihlLHQuZGljdD8ub2JqSWQpO3JldHVybn10aHJvdyBlfWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGgscj1hK2kubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKHIpLnNldChpLGEpO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9Z2V0QmFzZVN0cmVhbXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuc3RyZWFtcyl7Y29uc3QgaT10LmdldEJhc2VTdHJlYW1zKCk7aSYmZS5wdXNoKC4uLmkpfXJldHVybiBlLmxlbmd0aD4wP2U6bnVsbH19Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uOCk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoNSl9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cjtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZSh0KTspdD1lLmdldEJ5dGUoKTtpZigtMT09PXR8fDEyNj09PXQpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCBpPXRoaXMuYnVmZmVyTGVuZ3RoO2xldCBhLHI7aWYoMTIyPT09dCl7YT10aGlzLmVuc3VyZUJ1ZmZlcihpKzQpO2ZvcihyPTA7cjw0OysrcilhW2krcl09MDt0aGlzLmJ1ZmZlckxlbmd0aCs9NH1lbHNle2NvbnN0IHM9dGhpcy5pbnB1dDtzWzBdPXQ7Zm9yKHI9MTtyPDU7KytyKXt0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO3Nbcl09dDtpZigtMT09PXR8fDEyNj09PXQpYnJlYWt9YT10aGlzLmVuc3VyZUJ1ZmZlcihpK3ItMSk7dGhpcy5idWZmZXJMZW5ndGgrPXItMTtpZihyPDUpe2Zvcig7cjw1OysrcilzW3JdPTExNzt0aGlzLmVvZj0hMH1sZXQgbj0wO2ZvcihyPTA7cjw1OysrciluPTg1Km4rKHNbcl0tMzMpO2ZvcihyPTM7cj49MDstLXIpe2FbaStyXT0yNTUmbjtuPj49OH19fX1jbGFzcyBBc2NpaUhleFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGk9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IGE9dGhpcy5idWZmZXJMZW5ndGgscj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKHI8MClyPWU7ZWxzZXtpW2ErK109cjw8NHxlO3I9LTF9fWlmKHI+PTAmJnRoaXMuZW9mKXtpW2ErK109cjw8NDtyPS0xfXRoaXMuZmlyc3REaWdpdD1yO3RoaXMuYnVmZmVyTGVuZ3RoPWF9fWNvbnN0IHh0PS0xLFV0PVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLE10PVtbLTEsLTFdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNTYwXV0sTHQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzgsMjldLFs4LDI5XSxbOCwzMF0sWzgsMzBdLFs4LDQ1XSxbOCw0NV0sWzgsNDZdLFs4LDQ2XSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjNdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs4LDQ3XSxbOCw0N10sWzgsNDhdLFs4LDQ4XSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbOCwzM10sWzgsMzNdLFs4LDM0XSxbOCwzNF0sWzgsMzVdLFs4LDM1XSxbOCwzNl0sWzgsMzZdLFs4LDM3XSxbOCwzN10sWzgsMzhdLFs4LDM4XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzgsMzFdLFs4LDMxXSxbOCwzMl0sWzgsMzJdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDFdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzgsNTNdLFs4LDUzXSxbOCw1NF0sWzgsNTRdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbOCwzOV0sWzgsMzldLFs4LDQwXSxbOCw0MF0sWzgsNDFdLFs4LDQxXSxbOCw0Ml0sWzgsNDJdLFs4LDQzXSxbOCw0M10sWzgsNDRdLFs4LDQ0XSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs4LDYxXSxbOCw2MV0sWzgsNjJdLFs4LDYyXSxbOCw2M10sWzgsNjNdLFs4LDBdLFs4LDBdLFs4LDMyMF0sWzgsMzIwXSxbOCwzODRdLFs4LDM4NF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNywyN10sWzcsMjddLFs3LDI3XSxbNywyN10sWzgsNTldLFs4LDU5XSxbOCw2MF0sWzgsNjBdLFs5LDE0NzJdLFs5LDE1MzZdLFs5LDE2MDBdLFs5LDE3MjhdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzgsNDldLFs4LDQ5XSxbOCw1MF0sWzgsNTBdLFs4LDUxXSxbOCw1MV0sWzgsNTJdLFs4LDUyXSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzgsNTVdLFs4LDU1XSxbOCw1Nl0sWzgsNTZdLFs4LDU3XSxbOCw1N10sWzgsNThdLFs4LDU4XSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzYsMTY2NF0sWzgsNDQ4XSxbOCw0NDhdLFs4LDUxMl0sWzgsNTEyXSxbOSw3MDRdLFs5LDc2OF0sWzgsNjQwXSxbOCw2NDBdLFs4LDU3Nl0sWzgsNTc2XSxbOSw4MzJdLFs5LDg5Nl0sWzksOTYwXSxbOSwxMDI0XSxbOSwxMDg4XSxbOSwxMTUyXSxbOSwxMjE2XSxbOSwxMjgwXSxbOSwxMzQ0XSxbOSwxNDA4XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDJdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs0LDNdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOF0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzUsOV0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDRdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN10sWzQsN11dLEh0PVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLEp0PVtbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzExLDIzXSxbMTEsMjNdLFsxMiw1MF0sWzEyLDUxXSxbMTIsNDRdLFsxMiw0NV0sWzEyLDQ2XSxbMTIsNDddLFsxMiw1N10sWzEyLDU4XSxbMTIsNjFdLFsxMiwyNTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTIsNDhdLFsxMiw0OV0sWzEyLDYyXSxbMTIsNjNdLFsxMiwzMF0sWzEyLDMxXSxbMTIsMzJdLFsxMiwzM10sWzEyLDQwXSxbMTIsNDFdLFsxMSwyMl0sWzExLDIyXSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzEyLDEyOF0sWzEyLDE5Ml0sWzEyLDI2XSxbMTIsMjddLFsxMiwyOF0sWzEyLDI5XSxbMTEsMTldLFsxMSwxOV0sWzExLDIwXSxbMTEsMjBdLFsxMiwzNF0sWzEyLDM1XSxbMTIsMzZdLFsxMiwzN10sWzEyLDM4XSxbMTIsMzldLFsxMSwyMV0sWzExLDIxXSxbMTIsNDJdLFsxMiw0M10sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl1dLFl0PVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs2LDldLFs2LDhdLFs1LDddLFs1LDddLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDVdLFs0LDVdLFs0LDVdLFs0LDVdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDNdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdLFsyLDJdXTtjbGFzcyBDQ0lUVEZheERlY29kZXJ7Y29uc3RydWN0b3IoZSx0PXt9KXtpZighZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUubmV4dCl0aHJvdyBuZXcgRXJyb3IoJ0NDSVRURmF4RGVjb2RlciAtIGludmFsaWQgInNvdXJjZSIgcGFyYW1ldGVyLicpO3RoaXMuc291cmNlPWU7dGhpcy5lb2Y9ITE7dGhpcy5lbmNvZGluZz10Lkt8fDA7dGhpcy5lb2xpbmU9dC5FbmRPZkxpbmV8fCExO3RoaXMuYnl0ZUFsaWduPXQuRW5jb2RlZEJ5dGVBbGlnbnx8ITE7dGhpcy5jb2x1bW5zPXQuQ29sdW1uc3x8MTcyODt0aGlzLnJvd3M9dC5Sb3dzfHwwO3RoaXMuZW9ibG9jaz10LkVuZE9mQmxvY2s/PyEwO3RoaXMuYmxhY2s9dC5CbGFja0lzMXx8ITE7dGhpcy5jb2RpbmdMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMSk7dGhpcy5yZWZMaW5lPW5ldyBVaW50MzJBcnJheSh0aGlzLmNvbHVtbnMrMik7dGhpcy5jb2RpbmdMaW5lWzBdPXRoaXMuY29sdW1uczt0aGlzLmNvZGluZ1Bvcz0wO3RoaXMucm93PTA7dGhpcy5uZXh0TGluZTJEPXRoaXMuZW5jb2Rpbmc8MDt0aGlzLmlucHV0Qml0cz0wO3RoaXMuaW5wdXRCdWY9MDt0aGlzLm91dHB1dEJpdHM9MDt0aGlzLnJvd3NEb25lPSExO2xldCBpO2Zvcig7MD09PShpPXRoaXMuX2xvb2tCaXRzKDEyKSk7KXRoaXMuX2VhdEJpdHMoMSk7MT09PWkmJnRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX1yZWFkTmV4dENoYXIoKXtpZih0aGlzLmVvZilyZXR1cm4tMTtjb25zdCBlPXRoaXMucmVmTGluZSx0PXRoaXMuY29kaW5nTGluZSxpPXRoaXMuY29sdW1ucztsZXQgYSxyLHMsbixvO2lmKDA9PT10aGlzLm91dHB1dEJpdHMpe3RoaXMucm93c0RvbmUmJih0aGlzLmVvZj0hMCk7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5lcnI9ITE7bGV0IHMsbyxnO2lmKHRoaXMubmV4dExpbmUyRCl7Zm9yKG49MDt0W25dPGk7KytuKWVbbl09dFtuXTtlW24rK109aTtlW25dPWk7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7YT0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPXRoaXMuX2dldFR3b0RpbUNvZGUoKTtzd2l0Y2gocyl7Y2FzZSAwOnRoaXMuX2FkZFBpeGVscyhlW2ErMV0scik7ZVthKzFdPGkmJihhKz0yKTticmVhaztjYXNlIDE6cz1vPTA7aWYocil7ZG97cys9Zz10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShnPj02NCk7ZG97bys9Zz10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShnPj02NCl9ZWxzZXtkb3tzKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KX10aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rcyxyKTt0W3RoaXMuY29kaW5nUG9zXTxpJiZ0aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rbywxXnIpO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9MjticmVhaztjYXNlIDc6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMyxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA1OnRoaXMuX2FkZFBpeGVscyhlW2FdKzIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMzp0aGlzLl9hZGRQaXhlbHMoZVthXSsxLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDI6dGhpcy5fYWRkUGl4ZWxzKGVbYV0scik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgODp0aGlzLl9hZGRQaXhlbHNOZWcoZVthXS0zLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7YT4wPy0tYTorK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgNjp0aGlzLl9hZGRQaXhlbHNOZWcoZVthXS0yLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7YT4wPy0tYTorK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgNDp0aGlzLl9hZGRQaXhlbHNOZWcoZVthXS0xLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7YT4wPy0tYTorK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgeHQ6dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lb2Y9ITA7YnJlYWs7ZGVmYXVsdDppbmZvKCJiYWQgMmQgY29kZSIpO3RoaXMuX2FkZFBpeGVscyhpLDApO3RoaXMuZXJyPSEwfX19ZWxzZXt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtyPTA7Zm9yKDt0W3RoaXMuY29kaW5nUG9zXTxpOyl7cz0wO2lmKHIpZG97cys9Zz10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShnPj02NCk7ZWxzZSBkb3tzKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KTt0aGlzLl9hZGRQaXhlbHModFt0aGlzLmNvZGluZ1Bvc10rcyxyKTtyXj0xfX1sZXQgYz0hMTt0aGlzLmJ5dGVBbGlnbiYmKHRoaXMuaW5wdXRCaXRzJj0tOCk7aWYodGhpcy5lb2Jsb2NrfHx0aGlzLnJvdyE9PXRoaXMucm93cy0xKXtzPXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0aGlzLmVvbGluZSlmb3IoO3MhPT14dCYmMSE9PXM7KXt0aGlzLl9lYXRCaXRzKDEpO3M9dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2M9ITB9ZWxzZSBzPT09eHQmJih0aGlzLmVvZj0hMCl9ZWxzZSB0aGlzLnJvd3NEb25lPSEwO2lmKCF0aGlzLmVvZiYmdGhpcy5lbmNvZGluZz4wJiYhdGhpcy5yb3dzRG9uZSl7dGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfWlmKHRoaXMuZW9ibG9jayYmYyYmdGhpcy5ieXRlQWxpZ24pe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKDE9PT1zKXt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lbmNvZGluZz49MClmb3Iobj0wO248NDsrK24pe3M9dGhpcy5fbG9va0JpdHMoMTIpOzEhPT1zJiZpbmZvKCJiYWQgcnRjIGNvZGU6ICIrcyk7dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfX10aGlzLmVvZj0hMH19ZWxzZSBpZih0aGlzLmVyciYmdGhpcy5lb2xpbmUpe2Zvcig7Oyl7cz10aGlzLl9sb29rQml0cygxMyk7aWYocz09PXh0KXt0aGlzLmVvZj0hMDtyZXR1cm4tMX1pZihzPj4xPT0xKWJyZWFrO3RoaXMuX2VhdEJpdHMoMSl9dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9lYXRCaXRzKDEpO3RoaXMubmV4dExpbmUyRD0hKDEmcyl9fXRoaXMub3V0cHV0Qml0cz10WzBdPjA/dFt0aGlzLmNvZGluZ1Bvcz0wXTp0W3RoaXMuY29kaW5nUG9zPTFdO3RoaXMucm93Kyt9aWYodGhpcy5vdXRwdXRCaXRzPj04KXtvPTEmdGhpcy5jb2RpbmdQb3M/MDoyNTU7dGhpcy5vdXRwdXRCaXRzLT04O2lmKDA9PT10aGlzLm91dHB1dEJpdHMmJnRbdGhpcy5jb2RpbmdQb3NdPGkpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19fWVsc2V7cz04O289MDtkb3tpZigibnVtYmVyIiE9dHlwZW9mIHRoaXMub3V0cHV0Qml0cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ0ludmFsaWQgL0NDSVRURmF4RGVjb2RlIGRhdGEsICJvdXRwdXRCaXRzIiBtdXN0IGJlIGEgbnVtYmVyLicpO2lmKHRoaXMub3V0cHV0Qml0cz5zKXtvPDw9czsxJnRoaXMuY29kaW5nUG9zfHwob3w9MjU1Pj44LXMpO3RoaXMub3V0cHV0Qml0cy09cztzPTB9ZWxzZXtvPDw9dGhpcy5vdXRwdXRCaXRzOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+PjgtdGhpcy5vdXRwdXRCaXRzKTtzLT10aGlzLm91dHB1dEJpdHM7dGhpcy5vdXRwdXRCaXRzPTA7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX1lbHNlIGlmKHM+MCl7bzw8PXM7cz0wfX19d2hpbGUocyl9dGhpcy5ibGFjayYmKG9ePTI1NSk7cmV0dXJuIG99X2FkZFBpeGVscyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX10aGlzLmNvZGluZ1Bvcz1hfV9hZGRQaXhlbHNOZWcoZSx0KXtjb25zdCBpPXRoaXMuY29kaW5nTGluZTtsZXQgYT10aGlzLmNvZGluZ1BvcztpZihlPmlbYV0pe2lmKGU+dGhpcy5jb2x1bW5zKXtpbmZvKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZhXnQmJisrYTtpW2FdPWV9ZWxzZSBpZihlPGlbYV0pe2lmKGU8MCl7aW5mbygiaW52YWxpZCBjb2RlIik7dGhpcy5lcnI9ITA7ZT0wfWZvcig7YT4wJiZlPGlbYS0xXTspLS1hO2lbYV09ZX10aGlzLmNvZGluZ1Bvcz1hfV9maW5kVGFibGVDb2RlKGUsdCxpLGEpe2NvbnN0IHI9YXx8MDtmb3IobGV0IGE9ZTthPD10OysrYSl7bGV0IGU9dGhpcy5fbG9va0JpdHMoYSk7aWYoZT09PXh0KXJldHVyblshMCwxLCExXTthPHQmJihlPDw9dC1hKTtpZighcnx8ZT49cil7Y29uc3QgdD1pW2Utcl07aWYodFswXT09PWEpe3RoaXMuX2VhdEJpdHMoYSk7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPVV0W3RdO2lmKGU/LlswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsVXQpO2lmKGVbMF0mJmVbMl0pcmV0dXJuIGVbMV19aW5mbygiQmFkIHR3byBkaW0gY29kZSIpO3JldHVybiB4dH1fZ2V0V2hpdGVDb2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cygxMik7aWYodD09PXh0KXJldHVybiAxO2U9dD4+NT09MD9NdFt0XTpMdFt0Pj4zXTtpZihlWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDksTHQpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLE10KTtpZihlWzBdKXJldHVybiBlWzFdfWluZm8oImJhZCB3aGl0ZSBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fZ2V0QmxhY2tDb2RlKCl7bGV0IGUsdDtpZih0aGlzLmVvYmxvY2spe2U9dGhpcy5fbG9va0JpdHMoMTMpO2lmKGU9PT14dClyZXR1cm4gMTt0PWU+Pjc9PTA/SHRbZV06ZT4+OT09MCYmZT4+NyE9MD9KdFsoZT4+MSktNjRdOll0W2U+PjddO2lmKHRbMF0+MCl7dGhpcy5fZWF0Qml0cyh0WzBdKTtyZXR1cm4gdFsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDIsNixZdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixKdCw2NCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTAsMTMsSHQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIGJsYWNrIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9sb29rQml0cyhlKXtsZXQgdDtmb3IoO3RoaXMuaW5wdXRCaXRzPGU7KXtpZigtMT09PSh0PXRoaXMuc291cmNlLm5leHQoKSkpcmV0dXJuIDA9PT10aGlzLmlucHV0Qml0cz94dDp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX1jbGFzcyBDQ0lUVEZheFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2kgaW5zdGFuY2VvZiBEaWN0fHwoaT1EaWN0LmVtcHR5KTtjb25zdCBhPXtuZXh0OigpPT5lLmdldEJ5dGUoKX07dGhpcy5jY2l0dEZheERlY29kZXI9bmV3IENDSVRURmF4RGVjb2RlcihhLHtLOmkuZ2V0KCJLIiksRW5kT2ZMaW5lOmkuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmkuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczppLmdldCgiQ29sdW1ucyIpLFJvd3M6aS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmkuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6aS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fWNvbnN0IHZ0PW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSksVHQ9bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksS3Q9bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxxdD1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0sT3Q9W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XTtjbGFzcyBGbGF0ZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBpPWUuZ2V0Qnl0ZSgpLGE9ZS5nZXRCeXRlKCk7aWYoLTE9PT1pfHwtMT09PWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICR7aX0sICR7YX1gKTtpZig4IT0oMTUmaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBmbGF0ZSBzdHJlYW06ICR7aX0sICR7YX1gKTtpZigoKGk8PDgpK2EpJTMxIT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7aX0sICR7YX1gKTtpZigzMiZhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICR7aX0sICR7YX1gKTt0aGlzLmNvZGVTaXplPTA7dGhpcy5jb2RlQnVmPTB9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7Y29uc3QgaT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gaT8uc3ViYXJyYXkoMCxlKXx8dGhpcy5nZXRCeXRlcyhlKX1hc3luYyBhc3luY0dldEJ5dGVzKCl7dGhpcy5zdHIucmVzZXQoKTtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKCk7dHJ5e2NvbnN0e3JlYWRhYmxlOnQsd3JpdGFibGU6aX09bmV3IERlY29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSxhPWkuZ2V0V3JpdGVyKCk7YS53cml0ZShlKTthLmNsb3NlKCk7Y29uc3Qgcj1bXTtsZXQgcz0wO2ZvciBhd2FpdChjb25zdCBlIG9mIHQpe3IucHVzaChlKTtzKz1lLmJ5dGVMZW5ndGh9Y29uc3Qgbj1uZXcgVWludDhBcnJheShzKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIHIpe24uc2V0KGUsbyk7bys9ZS5ieXRlTGVuZ3RofXJldHVybiBufWNhdGNoe3RoaXMuc3RyPW5ldyBTdHJlYW0oZSwyLGUubGVuZ3RoLHRoaXMuc3RyLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH19Z2V0IGlzQXN5bmMoKXtyZXR1cm4hMH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGksYT10aGlzLmNvZGVTaXplLHI9dGhpcy5jb2RlQnVmO2Zvcig7YTxlOyl7aWYoLTE9PT0oaT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7cnw9aTw8YTthKz04fWk9ciYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9cj4+ZTt0aGlzLmNvZGVTaXplPWEtPWU7cmV0dXJuIGl9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyLGk9ZVswXSxhPWVbMV07bGV0IHIscz10aGlzLmNvZGVTaXplLG49dGhpcy5jb2RlQnVmO2Zvcig7czxhJiYtMSE9PShyPXQuZ2V0Qnl0ZSgpKTspe258PXI8PHM7cys9OH1jb25zdCBvPWlbbiYoMTw8YSktMV0sZz1vPj4xNixjPTY1NTM1Jm87aWYoZzwxfHxzPGcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPW4+Pmc7dGhpcy5jb2RlU2l6ZT1zLWc7cmV0dXJuIGN9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaSxhPTA7Zm9yKGk9MDtpPHQ7KytpKWVbaV0+YSYmKGE9ZVtpXSk7Y29uc3Qgcj0xPDxhLHM9bmV3IEludDMyQXJyYXkocik7Zm9yKGxldCBuPTEsbz0wLGc9MjtuPD1hOysrbixvPDw9MSxnPDw9MSlmb3IobGV0IGE9MDthPHQ7KythKWlmKGVbYV09PT1uKXtsZXQgZT0wLHQ9bztmb3IoaT0wO2k8bjsrK2kpe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGk9ZTtpPHI7aSs9ZylzW2ldPW48PDE2fGE7KytvfXJldHVybltzLGFdfSNtKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdCxpO2NvbnN0IGE9dGhpcy5zdHI7dHJ5e3Q9dGhpcy5nZXRCaXRzKDMpfWNhdGNoKGUpe3RoaXMuI20oZS5tZXNzYWdlKTtyZXR1cm59MSZ0JiYodGhpcy5lb2Y9ITApO3Q+Pj0xO2lmKDA9PT10KXtsZXQgdDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGk9dDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59aXw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IHI9dDtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59cnw9dDw8ODtpZihyIT09KDY1NTM1Jn5pKSYmKDAhPT1pfHwwIT09cikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxuPXMraTtlPXRoaXMuZW5zdXJlQnVmZmVyKG4pO3RoaXMuYnVmZmVyTGVuZ3RoPW47aWYoMD09PWkpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMoaSk7ZS5zZXQodCxzKTt0Lmxlbmd0aDxpJiYodGhpcy5lb2Y9ITApfXJldHVybn1sZXQgcixzO2lmKDE9PT10KXtyPXF0O3M9T3R9ZWxzZXtpZigyIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt7Y29uc3QgZT10aGlzLmdldEJpdHMoNSkrMjU3LHQ9dGhpcy5nZXRCaXRzKDUpKzEsYT10aGlzLmdldEJpdHMoNCkrNCxuPW5ldyBVaW50OEFycmF5KHZ0Lmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPGE7KytvKW5bdnRbb11dPXRoaXMuZ2V0Qml0cygzKTtjb25zdCBnPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUobik7aT0wO289MDtjb25zdCBjPWUrdCxDPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLGwsUTtmb3IoO288Yzspe2NvbnN0IGU9dGhpcy5nZXRDb2RlKGcpO2lmKDE2PT09ZSl7aD0yO2w9MztRPWl9ZWxzZSBpZigxNz09PWUpe2g9MztsPTM7UT1pPTB9ZWxzZXtpZigxOCE9PWUpe0NbbysrXT1pPWU7Y29udGludWV9aD03O2w9MTE7UT1pPTB9bGV0IHQ9dGhpcy5nZXRCaXRzKGgpK2w7Zm9yKDt0LS0gPjA7KUNbbysrXT1RfXI9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShDLnN1YmFycmF5KDAsZSkpO3M9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShDLnN1YmFycmF5KGUsYykpfX1lPXRoaXMuYnVmZmVyO2xldCBuPWU/ZS5sZW5ndGg6MCxvPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IHQ9dGhpcy5nZXRDb2RlKHIpO2lmKHQ8MjU2KXtpZihvKzE+PW4pe2U9dGhpcy5lbnN1cmVCdWZmZXIobysxKTtuPWUubGVuZ3RofWVbbysrXT10O2NvbnRpbnVlfWlmKDI1Nj09PXQpe3RoaXMuYnVmZmVyTGVuZ3RoPW87cmV0dXJufXQtPTI1Nzt0PVR0W3RdO2xldCBhPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtpPSg2NTUzNSZ0KSthO3Q9dGhpcy5nZXRDb2RlKHMpO3Q9S3RbdF07YT10Pj4xNjthPjAmJihhPXRoaXMuZ2V0Qml0cyhhKSk7Y29uc3QgZz0oNjU1MzUmdCkrYTtpZihvK2k+PW4pe2U9dGhpcy5lbnN1cmVCdWZmZXIobytpKTtuPWUubGVuZ3RofWZvcihsZXQgdD0wO3Q8aTsrK3QsKytvKWVbb109ZVtvLWddfX19Y29uc3QgUHQ9W3txZToyMjAxNyxubXBzOjEsbmxwczoxLHN3aXRjaEZsYWc6MX0se3FlOjEzMzEzLG5tcHM6MixubHBzOjYsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjMsbmxwczo5LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczo0LG5scHM6MTIsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjUsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozOCxubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NyxubHBzOjYsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczo4LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczo5LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxMCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MTEsbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MTIsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MTMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjksbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjE1LG5scHM6MTQsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczoxNixubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjIwNzM3LG5tcHM6MTcsbmxwczoxNSxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjE4LG5scHM6MTYsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxOSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjEzMzEzLG5tcHM6MjAsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjIxLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6MTAyNDEsbm1wczoyMixubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoyMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjg3MDUsbm1wczoyNCxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoyNSxubHBzOjIyLHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczoyNixubHBzOjIzLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyNyxubHBzOjI0LHN3aXRjaEZsYWc6MH0se3FlOjUxMjEsbm1wczoyOCxubHBzOjI1LHN3aXRjaEZsYWc6MH0se3FlOjQ2MDksbm1wczoyOSxubHBzOjI2LHN3aXRjaEZsYWc6MH0se3FlOjQzNTMsbm1wczozMCxubHBzOjI3LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczozMSxubHBzOjI4LHN3aXRjaEZsYWc6MH0se3FlOjI0OTcsbm1wczozMixubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjIyMDksbm1wczozMyxubHBzOjMwLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczozNCxubHBzOjMxLHN3aXRjaEZsYWc6MH0se3FlOjEwODksbm1wczozNSxubHBzOjMyLHN3aXRjaEZsYWc6MH0se3FlOjY3MyxubXBzOjM2LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzcsbmxwczozNCxzd2l0Y2hGbGFnOjB9LHtxZTozMjEsbm1wczozOCxubHBzOjM1LHN3aXRjaEZsYWc6MH0se3FlOjI3MyxubXBzOjM5LG5scHM6MzYsc3dpdGNoRmxhZzowfSx7cWU6MTMzLG5tcHM6NDAsbmxwczozNyxzd2l0Y2hGbGFnOjB9LHtxZTo3MyxubXBzOjQxLG5scHM6Mzgsc3dpdGNoRmxhZzowfSx7cWU6Mzcsbm1wczo0MixubHBzOjM5LHN3aXRjaEZsYWc6MH0se3FlOjIxLG5tcHM6NDMsbmxwczo0MCxzd2l0Y2hGbGFnOjB9LHtxZTo5LG5tcHM6NDQsbmxwczo0MSxzd2l0Y2hGbGFnOjB9LHtxZTo1LG5tcHM6NDUsbmxwczo0Mixzd2l0Y2hGbGFnOjB9LHtxZToxLG5tcHM6NDUsbmxwczo0Myxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjQ2LG5scHM6NDYsc3dpdGNoRmxhZzowfV07Y2xhc3MgQXJpdGhtZXRpY0RlY29kZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuYnA9dDt0aGlzLmRhdGFFbmQ9aTt0aGlzLmNoaWdoPWVbdF07dGhpcy5jbG93PTA7dGhpcy5ieXRlSW4oKTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNzt0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1O3RoaXMuY3QtPTc7dGhpcy5hPTMyNzY4fWJ5dGVJbigpe2NvbnN0IGU9dGhpcy5kYXRhO2xldCB0PXRoaXMuYnA7aWYoMjU1PT09ZVt0XSlpZihlW3QrMV0+MTQzKXt0aGlzLmNsb3crPTY1MjgwO3RoaXMuY3Q9OH1lbHNle3QrKzt0aGlzLmNsb3crPWVbdF08PDk7dGhpcy5jdD03O3RoaXMuYnA9dH1lbHNle3QrKzt0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODA7dGhpcy5jdD04O3RoaXMuYnA9dH1pZih0aGlzLmNsb3c+NjU1MzUpe3RoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTY7dGhpcy5jbG93Jj02NTUzNX19cmVhZEJpdChlLHQpe2xldCBpPWVbdF0+PjEsYT0xJmVbdF07Y29uc3Qgcj1QdFtpXSxzPXIucWU7bGV0IG4sbz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYobzxzKXtvPXM7bj1hO2k9ci5ubXBzfWVsc2V7bz1zO249MV5hOzE9PT1yLnN3aXRjaEZsYWcmJihhPW4pO2k9ci5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3Njgmbykpe3RoaXMuYT1vO3JldHVybiBhfWlmKG88cyl7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXtuPWE7aT1yLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4Jm8pKTt0aGlzLmE9bztlW3RdPWk8PDF8YTtyZXR1cm4gbn19Y2xhc3MgSmJpZzJFcnJvciBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpiaWcyRXJyb3IiKX19Y2xhc3MgQ29udGV4dENhY2hle2dldENvbnRleHRzKGUpe3JldHVybiBlIGluIHRoaXM/dGhpc1tlXTp0aGlzW2VdPW5ldyBJbnQ4QXJyYXkoNjU1MzYpfX1jbGFzcyBEZWNvZGluZ0NvbnRleHR7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1pfWdldCBkZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJkZWNvZGVyIixuZXcgQXJpdGhtZXRpY0RlY29kZXIodGhpcy5kYXRhLHRoaXMuc3RhcnQsdGhpcy5lbmQpKX1nZXQgY29udGV4dENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjb250ZXh0Q2FjaGUiLG5ldyBDb250ZXh0Q2FjaGUpfX1jb25zdCBXdD0yKiozMS0xLGp0PS0oMioqMzEpO2Z1bmN0aW9uIGRlY29kZUludGVnZXIoZSx0LGkpe2NvbnN0IGE9ZS5nZXRDb250ZXh0cyh0KTtsZXQgcj0xO2Z1bmN0aW9uIHJlYWRCaXRzKGUpe2xldCB0PTA7Zm9yKGxldCBzPTA7czxlO3MrKyl7Y29uc3QgZT1pLnJlYWRCaXQoYSxyKTtyPXI8MjU2P3I8PDF8ZTo1MTEmKHI8PDF8ZSl8MjU2O3Q9dDw8MXxlfXJldHVybiB0Pj4+MH1jb25zdCBzPXJlYWRCaXRzKDEpLG49cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMzIpKzQ0MzY6cmVhZEJpdHMoMTIpKzM0MDpyZWFkQml0cyg4KSs4NDpyZWFkQml0cyg2KSsyMDpyZWFkQml0cyg0KSs0OnJlYWRCaXRzKDIpO2xldCBvOzA9PT1zP289bjpuPjAmJihvPS1uKTtyZXR1cm4gbz49anQmJm88PVd0P286bnVsbH1mdW5jdGlvbiBkZWNvZGVJQUlEKGUsdCxpKXtjb25zdCBhPWUuZ2V0Q29udGV4dHMoIklBSUQiKTtsZXQgcj0xO2ZvcihsZXQgZT0wO2U8aTtlKyspe3I9cjw8MXx0LnJlYWRCaXQoYSxyKX1yZXR1cm4gaTwzMT9yJigxPDxpKS0xOjIxNDc0ODM2NDcmcn1jb25zdCBYdD1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLFp0PVtbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6Mix5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTMseTotMX0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dXSxWdD1be2NvZGluZzpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDotMSx5OjF9LHt4OjAseToxfSx7eDoxLHk6MX1dfSx7Y29kaW5nOlt7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDowLHk6MX0se3g6MSx5OjF9XX1dLF90PVszOTcxNywxOTQxLDIyOSw0MDVdLHp0PVszMiw4XTtmdW5jdGlvbiBkZWNvZGVCaXRtYXAoZSx0LGksYSxyLHMsbixvKXtpZihlKXtyZXR1cm4gZGVjb2RlTU1SQml0bWFwKG5ldyBSZWFkZXIoby5kYXRhLG8uc3RhcnQsby5lbmQpLHQsaSwhMSl9aWYoMD09PWEmJiFzJiYhciYmND09PW4ubGVuZ3RoJiYzPT09blswXS54JiYtMT09PW5bMF0ueSYmLTM9PT1uWzFdLngmJi0xPT09blsxXS55JiYyPT09blsyXS54JiYtMj09PW5bMl0ueSYmLTI9PT1uWzNdLngmJi0yPT09blszXS55KXJldHVybiBmdW5jdGlvbiBkZWNvZGVCaXRtYXBUZW1wbGF0ZTAoZSx0LGkpe2NvbnN0IGE9aS5kZWNvZGVyLHI9aS5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIikscz1bXTtsZXQgbixvLGcsYyxDLGgsbDtmb3Iobz0wO288dDtvKyspe0M9c1tvXT1uZXcgVWludDhBcnJheShlKTtoPW88MT9DOnNbby0xXTtsPW88Mj9DOnNbby0yXTtuPWxbMF08PDEzfGxbMV08PDEyfGxbMl08PDExfGhbMF08PDd8aFsxXTw8NnxoWzJdPDw1fGhbM108PDQ7Zm9yKGc9MDtnPGU7ZysrKXtDW2ddPWM9YS5yZWFkQml0KHIsbik7bj0oMzE3MzUmbik8PDF8KGcrMzxlP2xbZyszXTw8MTE6MCl8KGcrNDxlP2hbZys0XTw8NDowKXxjfX1yZXR1cm4gc30odCxpLG8pO2NvbnN0IGc9ISFzLGM9WnRbYV0uY29uY2F0KG4pO2Muc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS55LXQueXx8ZS54LXQueH0pKTtjb25zdCBDPWMubGVuZ3RoLGg9bmV3IEludDhBcnJheShDKSxsPW5ldyBJbnQ4QXJyYXkoQyksUT1bXTtsZXQgRSx1LGQ9MCxmPTAscD0wLG09MDtmb3IodT0wO3U8Qzt1Kyspe2hbdV09Y1t1XS54O2xbdV09Y1t1XS55O2Y9TWF0aC5taW4oZixjW3VdLngpO3A9TWF0aC5tYXgocCxjW3VdLngpO209TWF0aC5taW4obSxjW3VdLnkpO3U8Qy0xJiZjW3VdLnk9PT1jW3UrMV0ueSYmY1t1XS54PT09Y1t1KzFdLngtMT9kfD0xPDxDLTEtdTpRLnB1c2godSl9Y29uc3QgeT1RLmxlbmd0aCx3PW5ldyBJbnQ4QXJyYXkoeSksYj1uZXcgSW50OEFycmF5KHkpLEQ9bmV3IFVpbnQxNkFycmF5KHkpO2ZvcihFPTA7RTx5O0UrKyl7dT1RW0VdO3dbRV09Y1t1XS54O2JbRV09Y1t1XS55O0RbRV09MTw8Qy0xLXV9Y29uc3QgUz0tZixrPS1tLFI9dC1wLE49X3RbYV07bGV0IEc9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgeD1bXSxVPW8uZGVjb2RlcixNPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBMLEgsSixZLHYsVD0wLEs9MDtmb3IobGV0IGU9MDtlPGk7ZSsrKXtpZihyKXtUXj1VLnJlYWRCaXQoTSxOKTtpZihUKXt4LnB1c2goRyk7Y29udGludWV9fUc9bmV3IFVpbnQ4QXJyYXkoRyk7eC5wdXNoKEcpO2ZvcihMPTA7TDx0O0wrKyl7aWYoZyYmc1tlXVtMXSl7R1tMXT0wO2NvbnRpbnVlfWlmKEw+PVMmJkw8UiYmZT49ayl7Sz1LPDwxJmQ7Zm9yKHU9MDt1PHk7dSsrKXtIPWUrYlt1XTtKPUwrd1t1XTtZPXhbSF1bSl07aWYoWSl7WT1EW3VdO0t8PVl9fX1lbHNle0s9MDt2PUMtMTtmb3IodT0wO3U8Qzt1Kyssdi0tKXtKPUwraFt1XTtpZihKPj0wJiZKPHQpe0g9ZStsW3VdO2lmKEg+PTApe1k9eFtIXVtKXTtZJiYoS3w9WTw8dil9fX19Y29uc3QgaT1VLnJlYWRCaXQoTSxLKTtHW0xdPWl9fXJldHVybiB4fWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGksYSxyLHMsbixvLGcpe2xldCBjPVZ0W2ldLmNvZGluZzswPT09aSYmKGM9Yy5jb25jYXQoW29bMF1dKSk7Y29uc3QgQz1jLmxlbmd0aCxoPW5ldyBJbnQzMkFycmF5KEMpLGw9bmV3IEludDMyQXJyYXkoQyk7bGV0IFE7Zm9yKFE9MDtRPEM7USsrKXtoW1FdPWNbUV0ueDtsW1FdPWNbUV0ueX1sZXQgRT1WdFtpXS5yZWZlcmVuY2U7MD09PWkmJihFPUUuY29uY2F0KFtvWzFdXSkpO2NvbnN0IHU9RS5sZW5ndGgsZD1uZXcgSW50MzJBcnJheSh1KSxmPW5ldyBJbnQzMkFycmF5KHUpO2ZvcihRPTA7UTx1O1ErKyl7ZFtRXT1FW1FdLng7ZltRXT1FW1FdLnl9Y29uc3QgcD1hWzBdLmxlbmd0aCxtPWEubGVuZ3RoLHk9enRbaV0sdz1bXSxiPWcuZGVjb2RlcixEPWcuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBTPTA7Zm9yKGxldCBpPTA7aTx0O2krKyl7aWYobil7U149Yi5yZWFkQml0KEQseSk7aWYoUyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTt3LnB1c2godCk7Zm9yKGxldCBuPTA7bjxlO24rKyl7bGV0IG8sZyxjPTA7Zm9yKFE9MDtRPEM7USsrKXtvPWkrbFtRXTtnPW4raFtRXTtvPDB8fGc8MHx8Zz49ZT9jPDw9MTpjPWM8PDF8d1tvXVtnXX1mb3IoUT0wO1E8dTtRKyspe289aStmW1FdLXM7Zz1uK2RbUV0tcjtvPDB8fG8+PW18fGc8MHx8Zz49cD9jPDw9MTpjPWM8PDF8YVtvXVtnXX1jb25zdCBFPWIucmVhZEJpdChELGMpO3Rbbl09RX19cmV0dXJuIHd9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsaSxhLHIscyxuLG8sZyxjLEMsaCxsLFEsRSx1LGQsZixwKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgbT1bXTtsZXQgeSx3O2Zvcih5PTA7eTxhO3krKyl7dz1uZXcgVWludDhBcnJheShpKTtpZihyKWZvcihsZXQgZT0wO2U8aTtlKyspd1tlXT1yO20ucHVzaCh3KX1jb25zdCBiPWQuZGVjb2RlcixEPWQuY29udGV4dENhY2hlO2xldCBTPWU/LVEudGFibGVEZWx0YVQuZGVjb2RlKHApOi1kZWNvZGVJbnRlZ2VyKEQsIklBRFQiLGIpLGs9MDt5PTA7Zm9yKDt5PHM7KXtTKz1lP1EudGFibGVEZWx0YVQuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFEVCIsYik7ays9ZT9RLnRhYmxlRmlyc3RTLmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRlMiLGIpO2xldCBhPWs7Zm9yKDs7KXtsZXQgcj0wO24+MSYmKHI9ZT9wLnJlYWRCaXRzKGYpOmRlY29kZUludGVnZXIoRCwiSUFJVCIsYikpO2NvbnN0IHM9bipTK3Isaz1lP1Euc3ltYm9sSURUYWJsZS5kZWNvZGUocCk6ZGVjb2RlSUFJRChELGIsZyksUj10JiYoZT9wLnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEQsIklBUkkiLGIpKTtsZXQgTj1vW2tdLEc9TlswXS5sZW5ndGgseD1OLmxlbmd0aDtpZihSKXtjb25zdCBlPWRlY29kZUludGVnZXIoRCwiSUFSRFciLGIpLHQ9ZGVjb2RlSW50ZWdlcihELCJJQVJESCIsYik7Rys9ZTt4Kz10O049ZGVjb2RlUmVmaW5lbWVudChHLHgsRSxOLChlPj4xKStkZWNvZGVJbnRlZ2VyKEQsIklBUkRYIixiKSwodD4+MSkrZGVjb2RlSW50ZWdlcihELCJJQVJEWSIsYiksITEsdSxkKX1sZXQgVT0wO2M/MSZoP1U9eC0xOmErPXgtMTpoPjE/YSs9Ry0xOlU9Ry0xO2NvbnN0IE09cy0oMSZoPzA6eC0xKSxMPWEtKDImaD9HLTE6MCk7bGV0IEgsSixZO2lmKGMpZm9yKEg9MDtIPHg7SCsrKXt3PW1bTCtIXTtpZighdyljb250aW51ZTtZPU5bSF07Y29uc3QgZT1NYXRoLm1pbihpLU0sRyk7c3dpdGNoKGwpe2Nhc2UgMDpmb3IoSj0wO0o8ZTtKKyspd1tNK0pdfD1ZW0pdO2JyZWFrO2Nhc2UgMjpmb3IoSj0wO0o8ZTtKKyspd1tNK0pdXj1ZW0pdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7bH0gaXMgbm90IHN1cHBvcnRlZGApfX1lbHNlIGZvcihKPTA7Sjx4O0orKyl7dz1tW00rSl07aWYodyl7WT1OW0pdO3N3aXRjaChsKXtjYXNlIDA6Zm9yKEg9MDtIPEc7SCsrKXdbTCtIXXw9WVtIXTticmVhaztjYXNlIDI6Zm9yKEg9MDtIPEc7SCsrKXdbTCtIXV49WVtIXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2x9IGlzIG5vdCBzdXBwb3J0ZWRgKX19fXkrKztjb25zdCB2PWU/US50YWJsZURlbHRhUy5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQURTIixiKTtpZihudWxsPT09dilicmVhazthKz1VK3YrQ319cmV0dXJuIG19ZnVuY3Rpb24gcmVhZFNlZ21lbnRIZWFkZXIoZSx0KXtjb25zdCBpPXt9O2kubnVtYmVyPXJlYWRVaW50MzIoZSx0KTtjb25zdCBhPWVbdCs0XSxyPTYzJmE7aWYoIVh0W3JdKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIityKTtpLnR5cGU9cjtpLnR5cGVOYW1lPVh0W3JdO2kuZGVmZXJyZWROb25SZXRhaW49ISEoMTI4JmEpO2NvbnN0IHM9ISEoNjQmYSksbj1lW3QrNV07bGV0IG89bj4+NSY3O2NvbnN0IGc9WzMxJm5dO2xldCBjPXQrNjtpZig3PT09bil7bz01MzY4NzA5MTEmcmVhZFVpbnQzMihlLGMtMSk7Yys9MztsZXQgdD1vKzc+PjM7Z1swXT1lW2MrK107Zm9yKDstLXQ+MDspZy5wdXNoKGVbYysrXSl9ZWxzZSBpZig1PT09bnx8Nj09PW4pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgcmVmZXJyZWQtdG8gZmxhZ3MiKTtpLnJldGFpbkJpdHM9ZztsZXQgQz00O2kubnVtYmVyPD0yNTY/Qz0xOmkubnVtYmVyPD02NTUzNiYmKEM9Mik7Y29uc3QgaD1bXTtsZXQgbCxRO2ZvcihsPTA7bDxvO2wrKyl7bGV0IHQ7dD0xPT09Qz9lW2NdOjI9PT1DP3JlYWRVaW50MTYoZSxjKTpyZWFkVWludDMyKGUsYyk7aC5wdXNoKHQpO2MrPUN9aS5yZWZlcnJlZFRvPWg7aWYocyl7aS5wYWdlQXNzb2NpYXRpb249cmVhZFVpbnQzMihlLGMpO2MrPTR9ZWxzZSBpLnBhZ2VBc3NvY2lhdGlvbj1lW2MrK107aS5sZW5ndGg9cmVhZFVpbnQzMihlLGMpO2MrPTQ7aWYoNDI5NDk2NzI5NT09PWkubGVuZ3RoKXtpZigzOCE9PXIpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgdW5rbm93biBzZWdtZW50IGxlbmd0aCIpO3tjb25zdCB0PXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSxjKSxhPSEhKDEmZVtjKyR0XSkscj02LHM9bmV3IFVpbnQ4QXJyYXkocik7aWYoIWEpe3NbMF09MjU1O3NbMV09MTcyfXNbMl09dC5oZWlnaHQ+Pj4yNCYyNTU7c1szXT10LmhlaWdodD4+MTYmMjU1O3NbNF09dC5oZWlnaHQ+PjgmMjU1O3NbNV09MjU1JnQuaGVpZ2h0O2ZvcihsPWMsUT1lLmxlbmd0aDtsPFE7bCsrKXtsZXQgdD0wO2Zvcig7dDxyJiZzW3RdPT09ZVtsK3RdOyl0Kys7aWYodD09PXIpe2kubGVuZ3RoPWwrcjticmVha319aWYoNDI5NDk2NzI5NT09PWkubGVuZ3RoKXRocm93IG5ldyBKYmlnMkVycm9yKCJzZWdtZW50IGVuZCB3YXMgbm90IGZvdW5kIil9fWkuaGVhZGVyRW5kPWM7cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZFNlZ21lbnRzKGUsdCxpLGEpe2NvbnN0IHI9W107bGV0IHM9aTtmb3IoO3M8YTspe2NvbnN0IGk9cmVhZFNlZ21lbnRIZWFkZXIodCxzKTtzPWkuaGVhZGVyRW5kO2NvbnN0IGE9e2hlYWRlcjppLGRhdGE6dH07aWYoIWUucmFuZG9tQWNjZXNzKXthLnN0YXJ0PXM7cys9aS5sZW5ndGg7YS5lbmQ9c31yLnB1c2goYSk7aWYoNTE9PT1pLnR5cGUpYnJlYWt9aWYoZS5yYW5kb21BY2Nlc3MpZm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtyW2VdLnN0YXJ0PXM7cys9cltlXS5oZWFkZXIubGVuZ3RoO3JbZV0uZW5kPXN9cmV0dXJuIHJ9ZnVuY3Rpb24gcmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHQpe3JldHVybnt3aWR0aDpyZWFkVWludDMyKGUsdCksaGVpZ2h0OnJlYWRVaW50MzIoZSx0KzQpLHg6cmVhZFVpbnQzMihlLHQrOCkseTpyZWFkVWludDMyKGUsdCsxMiksY29tYmluYXRpb25PcGVyYXRvcjo3JmVbdCsxNl19fWNvbnN0ICR0PTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgaT1lLmhlYWRlcixhPWUuZGF0YSxyPWUuZW5kO2xldCBzLG4sbyxnLGM9ZS5zdGFydDtzd2l0Y2goaS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PXJlYWRVaW50MTYoYSxjKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7Yys9MjtpZighZS5odWZmbWFuKXtnPTA9PT1lLnRlbXBsYXRlPzQ6MTtuPVtdO2ZvcihvPTA7bzxnO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWUuYXQ9bn1pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bj1bXTtmb3Iobz0wO288MjtvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1lLnJlZmluZW1lbnRBdD1ufWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9cmVhZFVpbnQzMihhLGMpO2MrPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bZSxpLm51bWJlcixpLnJlZmVycmVkVG8sYSxjLHJdO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgQz17fTtDLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPSR0O2NvbnN0IGg9cmVhZFVpbnQxNihhLGMpO2MrPTI7Qy5odWZmbWFuPSEhKDEmaCk7Qy5yZWZpbmVtZW50PSEhKDImaCk7Qy5sb2dTdHJpcFNpemU9aD4+MiYzO0Muc3RyaXBTaXplPTE8PEMubG9nU3RyaXBTaXplO0MucmVmZXJlbmNlQ29ybmVyPWg+PjQmMztDLnRyYW5zcG9zZWQ9ISEoNjQmaCk7Qy5jb21iaW5hdGlvbk9wZXJhdG9yPWg+PjcmMztDLmRlZmF1bHRQaXhlbFZhbHVlPWg+PjkmMTtDLmRzT2Zmc2V0PWg8PDE3Pj4yNztDLnJlZmluZW1lbnRUZW1wbGF0ZT1oPj4xNSYxO2lmKEMuaHVmZm1hbil7Y29uc3QgZT1yZWFkVWludDE2KGEsYyk7Yys9MjtDLmh1ZmZtYW5GUz0zJmU7Qy5odWZmbWFuRFM9ZT4+MiYzO0MuaHVmZm1hbkRUPWU+PjQmMztDLmh1ZmZtYW5SZWZpbmVtZW50RFc9ZT4+NiYzO0MuaHVmZm1hblJlZmluZW1lbnRESD1lPj44JjM7Qy5odWZmbWFuUmVmaW5lbWVudERYPWU+PjEwJjM7Qy5odWZmbWFuUmVmaW5lbWVudERZPWU+PjEyJjM7Qy5odWZmbWFuUmVmaW5lbWVudFNpemVTZWxlY3Rvcj0hISgxNjM4NCZlKX1pZihDLnJlZmluZW1lbnQmJiFDLnJlZmluZW1lbnRUZW1wbGF0ZSl7bj1bXTtmb3Iobz0wO288MjtvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1DLnJlZmluZW1lbnRBdD1ufUMubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXM9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bQyxpLnJlZmVycmVkVG8sYSxjLHJdO2JyZWFrO2Nhc2UgMTY6Y29uc3QgbD17fSxRPWFbYysrXTtsLm1tcj0hISgxJlEpO2wudGVtcGxhdGU9UT4+MSYzO2wucGF0dGVybldpZHRoPWFbYysrXTtsLnBhdHRlcm5IZWlnaHQ9YVtjKytdO2wubWF4UGF0dGVybkluZGV4PXJlYWRVaW50MzIoYSxjKTtjKz00O3M9W2wsaS5udW1iZXIsYSxjLHJdO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpjb25zdCBFPXt9O0UuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9JHQ7Y29uc3QgdT1hW2MrK107RS5tbXI9ISEoMSZ1KTtFLnRlbXBsYXRlPXU+PjEmMztFLmVuYWJsZVNraXA9ISEoOCZ1KTtFLmNvbWJpbmF0aW9uT3BlcmF0b3I9dT4+NCY3O0UuZGVmYXVsdFBpeGVsVmFsdWU9dT4+NyYxO0UuZ3JpZFdpZHRoPXJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZEhlaWdodD1yZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZFZlY3Rvclg9cmVhZFVpbnQxNihhLGMpO2MrPTI7RS5ncmlkVmVjdG9yWT1yZWFkVWludDE2KGEsYyk7Yys9MjtzPVtFLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNvbnN0IGQ9e307ZC5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz0kdDtjb25zdCBmPWFbYysrXTtkLm1tcj0hISgxJmYpO2QudGVtcGxhdGU9Zj4+MSYzO2QucHJlZGljdGlvbj0hISg4JmYpO2lmKCFkLm1tcil7Zz0wPT09ZC50ZW1wbGF0ZT80OjE7bj1bXTtmb3Iobz0wO288ZztvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1kLmF0PW59cz1bZCxhLGMscl07YnJlYWs7Y2FzZSA0ODpjb25zdCBwPXt3aWR0aDpyZWFkVWludDMyKGEsYyksaGVpZ2h0OnJlYWRVaW50MzIoYSxjKzQpLHJlc29sdXRpb25YOnJlYWRVaW50MzIoYSxjKzgpLHJlc29sdXRpb25ZOnJlYWRVaW50MzIoYSxjKzEyKX07NDI5NDk2NzI5NT09PXAuaGVpZ2h0JiZkZWxldGUgcC5oZWlnaHQ7Y29uc3QgbT1hW2MrMTZdO3JlYWRVaW50MTYoYSxjKzE3KTtwLmxvc3NsZXNzPSEhKDEmbSk7cC5yZWZpbmVtZW50PSEhKDImbSk7cC5kZWZhdWx0UGl4ZWxWYWx1ZT1tPj4yJjE7cC5jb21iaW5hdGlvbk9wZXJhdG9yPW0+PjMmMztwLnJlcXVpcmVzQnVmZmVyPSEhKDMyJm0pO3AuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0Jm0pO3M9W3BdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVtpLm51bWJlcixhLGMscl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7aS50eXBlTmFtZX0oJHtpLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCBDPSJvbiIraS50eXBlTmFtZTtDIGluIHQmJnRbQ10uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspcHJvY2Vzc1NlZ21lbnQoZVtpXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmkuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWl9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGk9dGhpcy5jdXJyZW50UGFnZUluZm8sYT1lLndpZHRoLHI9ZS5oZWlnaHQscz1pLndpZHRoKzc+PjMsbj1pLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6aS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsZz0xMjg+Pig3JmUueCk7bGV0IGMsQyxoLGwsUT1lLnkqcysoZS54Pj4zKTtzd2l0Y2gobil7Y2FzZSAwOmZvcihjPTA7YzxyO2MrKyl7aD1nO2w9UTtmb3IoQz0wO0M8YTtDKyspe3RbY11bQ10mJihvW2xdfD1oKTtoPj49MTtpZighaCl7aD0xMjg7bCsrfX1RKz1zfWJyZWFrO2Nhc2UgMjpmb3IoYz0wO2M8cjtjKyspe2g9ZztsPVE7Zm9yKEM9MDtDPGE7QysrKXt0W2NdW0NdJiYob1tsXV49aCk7aD4+PTE7aWYoIWgpe2g9MTI4O2wrK319USs9c31icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke259IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxpLGEpe2NvbnN0IHI9ZS5pbmZvLHM9bmV3IERlY29kaW5nQ29udGV4dCh0LGksYSksbj1kZWNvZGVCaXRtYXAoZS5tbXIsci53aWR0aCxyLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQscyk7dGhpcy5kcmF3Qml0bWFwKHIsbil9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsaSxhLHIscyl7bGV0IG4sbztpZihlLmh1ZmZtYW4pe249ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGkpe2xldCBhLHIscyxuLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTphPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6YT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGkpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGkpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7cz1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGkpO28rK31lbHNlIHM9Z2V0U3RhbmRhcmRUYWJsZSgxKTtuPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGkpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6YSx0YWJsZURlbHRhV2lkdGg6cix0YWJsZUJpdG1hcFNpemU6cyx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpufX0oZSxpLHRoaXMuY3VzdG9tVGFibGVzKTtvPW5ldyBSZWFkZXIoYSxyLHMpfWxldCBnPXRoaXMuc3ltYm9scztnfHwodGhpcy5zeW1ib2xzPWc9e30pO2NvbnN0IGM9W107Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1nW2VdO3QmJmMucHVzaCguLi50KX1jb25zdCBDPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLHMpO2dbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsaSxhLHIscyxuLG8sZyxjLEMsaCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBsPVtdO2xldCBRPTAsRT1sb2cyKGkubGVuZ3RoK2EpO2NvbnN0IHU9Qy5kZWNvZGVyLGQ9Qy5jb250ZXh0Q2FjaGU7bGV0IGYscDtpZihlKXtmPWdldFN0YW5kYXJkVGFibGUoMSk7cD1bXTtFPU1hdGgubWF4KEUsMSl9Zm9yKDtsLmxlbmd0aDxhOyl7USs9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGgpOmRlY29kZUludGVnZXIoZCwiSUFESCIsdSk7bGV0IGE9MCxyPTA7Y29uc3QgZj1lP3AubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBmPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGgpOmRlY29kZUludGVnZXIoZCwiSUFEVyIsdSk7aWYobnVsbD09PWYpYnJlYWs7YSs9ZjtyKz1hO2xldCBtO2lmKHQpe2NvbnN0IHI9ZGVjb2RlSW50ZWdlcihkLCJJQUFJIix1KTtpZihyPjEpbT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxhLFEsMCxyLDEsaS5jb25jYXQobCksRSwwLDAsMSwwLHMsZyxjLEMsMCxoKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChkLHUsRSksdD1kZWNvZGVJbnRlZ2VyKGQsIklBUkRYIix1KSxyPWRlY29kZUludGVnZXIoZCwiSUFSRFkiLHUpO209ZGVjb2RlUmVmaW5lbWVudChhLFEsZyxlPGkubGVuZ3RoP2lbZV06bFtlLWkubGVuZ3RoXSx0LHIsITEsYyxDKX1sLnB1c2gobSl9ZWxzZSBpZihlKXAucHVzaChhKTtlbHNle209ZGVjb2RlQml0bWFwKCExLGEsUSxuLCExLG51bGwsbyxDKTtsLnB1c2gobSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShoKTtoLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChoLHIsUSk7ZWxzZXtjb25zdCBpPWguZW5kLGE9aC5wb3NpdGlvbitlO2guZW5kPWE7dD1kZWNvZGVNTVJCaXRtYXAoaCxyLFEsITEpO2guZW5kPWk7aC5wb3NpdGlvbj1hfWNvbnN0IGk9cC5sZW5ndGg7aWYoZj09PWktMSlsLnB1c2godCk7ZWxzZXtsZXQgZSxhLHIscyxuLG89MDtmb3IoZT1mO2U8aTtlKyspe3M9cFtlXTtyPW8rcztuPVtdO2ZvcihhPTA7YTxRO2ErKyluLnB1c2godFthXS5zdWJhcnJheShvLHIpKTtsLnB1c2gobik7bz1yfX19fWNvbnN0IG09W10seT1bXTtsZXQgdyxiLEQ9ITE7Y29uc3QgUz1pLmxlbmd0aCthO2Zvcig7eS5sZW5ndGg8Uzspe2xldCB0PWU/Zi5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQUVYIix1KTtmb3IoO3QtLTspeS5wdXNoKEQpO0Q9IUR9Zm9yKHc9MCxiPWkubGVuZ3RoO3c8Yjt3KyspeVt3XSYmbS5wdXNoKGlbd10pO2ZvcihsZXQgZT0wO2U8YTt3KyssZSsrKXlbd10mJm0ucHVzaChsW2VdKTtyZXR1cm4gbX0oZS5odWZmbWFuLGUucmVmaW5lbWVudCxjLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbixlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsQyxvKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGksYSxyKXtjb25zdCBzPWUuaW5mbztsZXQgbixvO2NvbnN0IGc9dGhpcy5zeW1ib2xzLGM9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1nW2VdO3QmJmMucHVzaCguLi50KX1jb25zdCBDPWxvZzIoYy5sZW5ndGgpO2lmKGUuaHVmZm1hbil7bz1uZXcgUmVhZGVyKGksYSxyKTtuPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxpLGEscil7Y29uc3Qgcz1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9ci5yZWFkQml0cyg0KTtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IG49bmV3IEh1ZmZtYW5UYWJsZShzLCExKTtzLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8YTspe2NvbnN0IHQ9bi5kZWNvZGUocik7aWYodD49MzIpe2xldCBpLGEsbjtzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7YT1yLnJlYWRCaXRzKDIpKzM7aT1zW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6YT1yLnJlYWRCaXRzKDMpKzM7aT0wO2JyZWFrO2Nhc2UgMzQ6YT1yLnJlYWRCaXRzKDcpKzExO2k9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihuPTA7bjxhO24rKyl7cy5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxpLDAsMF0pKTtlKyt9fWVsc2V7cy5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fXIuYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKHMsITEpO2xldCBnLGMsQyxoPTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmc9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Zz1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOkM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOkM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGgsdCxpKTtoKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpnLHRhYmxlRGVsdGFTOmMsdGFibGVEZWx0YVQ6Q319KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxjLmxlbmd0aCxvKX1jb25zdCBoPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpLGw9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGMsQyxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbixlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxoLGUubG9nU3RyaXBTaXplLG8pO3RoaXMuZHJhd0JpdG1hcChzLGwpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxpLGEscil7bGV0IHM9dGhpcy5wYXR0ZXJucztzfHwodGhpcy5wYXR0ZXJucz1zPXt9KTtjb25zdCBuPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpO3NbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGksYSxyLHMpe2NvbnN0IG49W107aWYoIWUpe24ucHVzaCh7eDotdCx5OjB9KTswPT09ciYmbi5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKGErMSkqdCxpLHIsITEsbnVsbCxuLHMpLGc9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IGE9W10scj10KmUscz1yK3Q7Zm9yKGxldCBlPTA7ZTxpO2UrKylhLnB1c2gob1tlXS5zdWJhcnJheShyLHMpKTtnLnB1c2goYSl9cmV0dXJuIGd9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLG4pfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGksYSxyKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbj1lLmluZm8sbz1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxyKSxnPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxpLGEscixzLG4sbyxnLGMsQyxoLGwsUSxFKXtpZihuKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09byl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7b30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgdT1bXTtsZXQgZCxmLHA7Zm9yKGQ9MDtkPHI7ZCsrKXtwPW5ldyBVaW50OEFycmF5KGEpO2lmKHMpZm9yKGY9MDtmPGE7ZisrKXBbZl09czt1LnB1c2gocCl9Y29uc3QgbT10Lmxlbmd0aCx5PXRbMF0sdz15WzBdLmxlbmd0aCxiPXkubGVuZ3RoLEQ9bG9nMihtKSxTPVtdO2lmKCFlKXtTLnB1c2goe3g6aTw9MT8zOjIseTotMX0pOzA9PT1pJiZTLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgaz1bXTtsZXQgUixOLEcseCxVLE0sTCxILEosWSx2O2UmJihSPW5ldyBSZWFkZXIoRS5kYXRhLEUuc3RhcnQsRS5lbmQpKTtmb3IoZD1ELTE7ZD49MDtkLS0pe049ZT9kZWNvZGVNTVJCaXRtYXAoUixnLGMsITApOmRlY29kZUJpdG1hcCghMSxnLGMsaSwhMSxudWxsLFMsRSk7a1tkXT1OfWZvcihHPTA7RzxjO0crKylmb3IoeD0wO3g8Zzt4Kyspe1U9MDtNPTA7Zm9yKGY9RC0xO2Y+PTA7Zi0tKXtVXj1rW2ZdW0ddW3hdO018PVU8PGZ9TD10W01dO0g9QytHKlEreCpsPj44O0o9aCtHKmwteCpRPj44O2lmKEg+PTAmJkgrdzw9YSYmSj49MCYmSitiPD1yKWZvcihkPTA7ZDxiO2QrKyl7dj11W0orZF07WT1MW2RdO2ZvcihmPTA7Zjx3O2YrKyl2W0grZl18PVlbZl19ZWxzZXtsZXQgZSx0O2ZvcihkPTA7ZDxiO2QrKyl7dD1KK2Q7aWYoISh0PDB8fHQ+PXIpKXt2PXVbdF07WT1MW2RdO2ZvcihmPTA7Zjx3O2YrKyl7ZT1IK2Y7ZT49MCYmZTxhJiYodltlXXw9WVtmXSl9fX19fXJldHVybiB1fShlLm1tcixzLGUudGVtcGxhdGUsbi53aWR0aCxuLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3Rvclksbyk7dGhpcy5kcmF3Qml0bWFwKG4sZyl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGksYSl7bGV0IHI9dGhpcy5jdXN0b21UYWJsZXM7cnx8KHRoaXMuY3VzdG9tVGFibGVzPXI9e30pO3JbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsaSl7Y29uc3QgYT1lW3RdLHI9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCsxKSxzPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrNSksbj1uZXcgUmVhZGVyKGUsdCs5LGkpLG89MSsoYT4+MSY3KSxnPTErKGE+PjQmNyksYz1bXTtsZXQgQyxoLGw9cjtkb3tDPW4ucmVhZEJpdHMobyk7aD1uLnJlYWRCaXRzKGcpO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2wsQyxoLDBdKSk7bCs9MTw8aH13aGlsZShsPHMpO0M9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtyLTEsQywzMiwwLCJsb3dlciJdKSk7Qz1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsQywzMiwwXSkpO2lmKDEmYSl7Qz1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW0MsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShjLCExKX0odCxpLGEpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGk9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2ldPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgYT10aGlzLmNoaWxkcmVuW2ldO2F8fCh0aGlzLmNoaWxkcmVuW2ldPWE9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7YS5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ZVt0XTtpLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShpLGkucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKGxldCBhPTA7YTx0O2ErKylpPU1hdGgubWF4KGksZVthXS5wcmVmaXhMZW5ndGgpO2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KGkrMSk7Zm9yKGxldCBpPTA7aTx0O2krKylhW2VbaV0ucHJlZml4TGVuZ3RoXSsrO2xldCByLHMsbixvPTEsZz0wO2FbMF09MDtmb3IoO288PWk7KXtnPWcrYVtvLTFdPDwxO3I9ZztzPTA7Zm9yKDtzPHQ7KXtuPWVbc107aWYobi5wcmVmaXhMZW5ndGg9PT1vKXtuLnByZWZpeENvZGU9cjtyKyt9cysrfW8rK319fWNvbnN0IEFpPXt9O2Z1bmN0aW9uIGdldFN0YW5kYXJkVGFibGUoZSl7bGV0IHQsaT1BaVtlXTtpZihpKXJldHVybiBpO3N3aXRjaChlKXtjYXNlIDE6dD1bWzAsMSw0LDBdLFsxNiwyLDgsMl0sWzI3MiwzLDE2LDZdLFs2NTgwOCwzLDMyLDddXTticmVhaztjYXNlIDI6dD1bWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbNzUsNiwzMiw2Ml0sWzYsNjNdXTticmVhaztjYXNlIDM6dD1bWy0yNTYsOCw4LDI1NF0sWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbLTI1Nyw4LDMyLDI1NSwibG93ZXIiXSxbNzUsNywzMiwxMjZdLFs2LDYyXV07YnJlYWs7Y2FzZSA0OnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWzc2LDUsMzIsMzFdXTticmVhaztjYXNlIDU6dD1bWy0yNTUsNyw4LDEyNl0sWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbLTI1Niw3LDMyLDEyNywibG93ZXIiXSxbNzYsNiwzMiw2Ml1dO2JyZWFrO2Nhc2UgNjp0PVtbLTIwNDgsNSwxMCwyOF0sWy0xMDI0LDQsOSw4XSxbLTUxMiw0LDgsOV0sWy0yNTYsNCw3LDEwXSxbLTEyOCw1LDYsMjldLFstNjQsNSw1LDMwXSxbLTMyLDQsNSwxMV0sWzAsMiw3LDBdLFsxMjgsMyw3LDJdLFsyNTYsMyw4LDNdLFs1MTIsNCw5LDEyXSxbMTAyNCw0LDEwLDEzXSxbLTIwNDksNiwzMiw2MiwibG93ZXIiXSxbMjA0OCw2LDMyLDYzXV07YnJlYWs7Y2FzZSA3OnQ9W1stMTAyNCw0LDksOF0sWy01MTIsMyw4LDBdLFstMjU2LDQsNyw5XSxbLTEyOCw1LDYsMjZdLFstNjQsNSw1LDI3XSxbLTMyLDQsNSwxMF0sWzAsNCw1LDExXSxbMzIsNSw1LDI4XSxbNjQsNSw2LDI5XSxbMTI4LDQsNywxMl0sWzI1NiwzLDgsMV0sWzUxMiwzLDksMl0sWzEwMjQsMywxMCwzXSxbLTEwMjUsNSwzMiwzMCwibG93ZXIiXSxbMjA0OCw1LDMyLDMxXV07YnJlYWs7Y2FzZSA4OnQ9W1stMTUsOCwzLDI1Ml0sWy03LDksMSw1MDhdLFstNSw4LDEsMjUzXSxbLTMsOSwwLDUwOV0sWy0yLDcsMCwxMjRdLFstMSw0LDAsMTBdLFswLDIsMSwwXSxbMiw1LDAsMjZdLFszLDYsMCw1OF0sWzQsMyw0LDRdLFsyMCw2LDEsNTldLFsyMiw0LDQsMTFdLFszOCw0LDUsMTJdLFs3MCw1LDYsMjddLFsxMzQsNSw3LDI4XSxbMjYyLDYsNyw2MF0sWzM5MCw3LDgsMTI1XSxbNjQ2LDYsMTAsNjFdLFstMTYsOSwzMiw1MTAsImxvd2VyIl0sWzE2NzAsOSwzMiw1MTFdLFsyLDFdXTticmVhaztjYXNlIDk6dD1bWy0zMSw4LDQsMjUyXSxbLTE1LDksMiw1MDhdLFstMTEsOCwyLDI1M10sWy03LDksMSw1MDldLFstNSw3LDEsMTI0XSxbLTMsNCwxLDEwXSxbLTEsMywxLDJdLFsxLDMsMSwzXSxbMyw1LDEsMjZdLFs1LDYsMSw1OF0sWzcsMyw1LDRdLFszOSw2LDIsNTldLFs0Myw0LDUsMTFdLFs3NSw0LDYsMTJdLFsxMzksNSw3LDI3XSxbMjY3LDUsOCwyOF0sWzUyMyw2LDgsNjBdLFs3NzksNyw5LDEyNV0sWzEyOTEsNiwxMSw2MV0sWy0zMiw5LDMyLDUxMCwibG93ZXIiXSxbMzMzOSw5LDMyLDUxMV0sWzIsMF1dO2JyZWFrO2Nhc2UgMTA6dD1bWy0yMSw3LDQsMTIyXSxbLTUsOCwwLDI1Ml0sWy00LDcsMCwxMjNdLFstMyw1LDAsMjRdLFstMiwyLDIsMF0sWzIsNSwwLDI1XSxbMyw2LDAsNTRdLFs0LDcsMCwxMjRdLFs1LDgsMCwyNTNdLFs2LDIsNiwxXSxbNzAsNSw1LDI2XSxbMTAyLDYsNSw1NV0sWzEzNCw2LDYsNTZdLFsxOTgsNiw3LDU3XSxbMzI2LDYsOCw1OF0sWzU4Miw2LDksNTldLFsxMDk0LDYsMTAsNjBdLFsyMTE4LDcsMTEsMTI1XSxbLTIyLDgsMzIsMjU0LCJsb3dlciJdLFs0MTY2LDgsMzIsMjU1XSxbMiwyXV07YnJlYWs7Y2FzZSAxMTp0PVtbMSwxLDAsMF0sWzIsMiwxLDJdLFs0LDQsMCwxMl0sWzUsNCwxLDEzXSxbNyw1LDEsMjhdLFs5LDUsMiwyOV0sWzEzLDYsMiw2MF0sWzE3LDcsMiwxMjJdLFsyMSw3LDMsMTIzXSxbMjksNyw0LDEyNF0sWzQ1LDcsNSwxMjVdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxMjp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMSw2XSxbNSw1LDAsMjhdLFs2LDUsMSwyOV0sWzgsNiwxLDYwXSxbMTAsNywwLDEyMl0sWzExLDcsMSwxMjNdLFsxMyw3LDIsMTI0XSxbMTcsNywzLDEyNV0sWzI1LDcsNCwxMjZdLFs0MSw4LDUsMjU0XSxbNzMsOCwzMiwyNTVdXTticmVhaztjYXNlIDEzOnQ9W1sxLDEsMCwwXSxbMiwzLDAsNF0sWzMsNCwwLDEyXSxbNCw1LDAsMjhdLFs1LDQsMSwxM10sWzcsMywzLDVdLFsxNSw2LDEsNThdLFsxNyw2LDIsNTldLFsyMSw2LDMsNjBdLFsyOSw2LDQsNjFdLFs0NSw2LDUsNjJdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxNDp0PVtbLTIsMywwLDRdLFstMSwzLDAsNV0sWzAsMSwwLDBdLFsxLDMsMCw2XSxbMiwzLDAsN11dO2JyZWFrO2Nhc2UgMTU6dD1bWy0yNCw3LDQsMTI0XSxbLTgsNiwyLDYwXSxbLTQsNSwxLDI4XSxbLTIsNCwwLDEyXSxbLTEsMywwLDRdLFswLDEsMCwwXSxbMSwzLDAsNV0sWzIsNCwwLDEzXSxbMyw1LDEsMjldLFs1LDYsMiw2MV0sWzksNyw0LDEyNV0sWy0yNSw3LDMyLDEyNiwibG93ZXIiXSxbMjUsNywzMiwxMjddXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzdGFuZGFyZCB0YWJsZSBCLiR7ZX0gZG9lcyBub3QgZXhpc3RgKX1mb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXT1uZXcgSHVmZm1hbkxpbmUodFtlXSk7aT1uZXcgSHVmZm1hblRhYmxlKHQsITApO0FpW2VdPWk7cmV0dXJuIGl9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGk9MDtmb3IodD1lLTE7dD49MDt0LS0paXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGl9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGkpe2xldCBhPTA7Zm9yKGxldCByPTAscz10Lmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWlbdFtyXV07aWYocyl7aWYoZT09PWEpcmV0dXJuIHM7YSsrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGkpe2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjxpO3IrKyl7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTthLnB1c2goaSk7Zm9yKGxldCBhPTA7YTx0O2ErKylpW2FdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIGF9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENDSVRURmF4RGVjb2RlcihlLHtLOi0xLENvbHVtbnM6dCxSb3dzOmksQmxhY2tJczE6ITAsRW5kT2ZCbG9jazphfSkscz1bXTtsZXQgbixvPSExO2ZvcihsZXQgZT0wO2U8aTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7cy5wdXNoKGUpO2xldCBpPS0xO2ZvcihsZXQgYT0wO2E8dDthKyspe2lmKGk8MCl7bj1yLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09bil7bj0wO289ITB9aT03fWVbYV09bj4+aSYxO2ktLX19aWYoYSYmIW8pe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09ci5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gc31jbGFzcyBKYmlnMkltYWdle3BhcnNlQ2h1bmtzKGUpe3JldHVybiBmdW5jdGlvbiBwYXJzZUpiaWcyQ2h1bmtzKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZVNlZ21lbnRWaXNpdG9yO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lW2ldO3Byb2Nlc3NTZWdtZW50cyhyZWFkU2VnbWVudHMoe30sYS5kYXRhLGEuc3RhcnQsYS5lbmQpLHQpfXJldHVybiB0LmJ1ZmZlcn0oZSl9cGFyc2UoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IEpiaWcySW1hZ2UucGFyc2UiKX19Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9aX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO2NvbnN0IHQ9bmV3IEpiaWcySW1hZ2UsaT1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgdD1lLmdldEJ5dGVzKCk7aS5wdXNoKHtkYXRhOnQsc3RhcnQ6MCxlbmQ6dC5sZW5ndGh9KX19aS5wdXNoKHtkYXRhOmUsc3RhcnQ6MCxlbmQ6ZS5sZW5ndGh9KTtjb25zdCBhPXQucGFyc2VDaHVua3MoaSkscj1hLmxlbmd0aDtmb3IobGV0IGU9MDtlPHI7ZSsrKWFbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2UgRDpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSBTOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6aSxkZXN0UG9zOmE9MCx3aWR0aDpyLGhlaWdodDpzfSl7bGV0IG49MDtjb25zdCBvPWUubGVuZ3RoPj4yLGc9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsbyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bjxvLTI7bis9MyxhKz00KXtjb25zdCBlPWdbbl0sdD1nW24rMV0scj1nW24rMl07aVthXT00Mjc4MTkwMDgwfGU7aVthKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7aVthKzJdPXQ+Pj4xNnxyPDwxNnw0Mjc4MTkwMDgwO2lbYSszXT1yPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgdD00Km4scj1lLmxlbmd0aDt0PHI7dCs9MylpW2ErK109ZVt0XXxlW3QrMV08PDh8ZVt0KzJdPDwxNnw0Mjc4MTkwMDgwfWVsc2V7Zm9yKDtuPG8tMjtuKz0zLGErPTQpe2NvbnN0IGU9Z1tuXSx0PWdbbisxXSxyPWdbbisyXTtpW2FdPTI1NXxlO2lbYSsxXT1lPDwyNHx0Pj4+OHwyNTU7aVthKzJdPXQ8PDE2fHI+Pj4xNnwyNTU7aVthKzNdPXI8PDh8MjU1fWZvcihsZXQgdD00Km4scj1lLmxlbmd0aDt0PHI7dCs9MylpW2ErK109ZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8MjU1fXJldHVybntzcmNQb3M6dCxkZXN0UG9zOmF9fShlKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmUsc3JjUG9zOnQ9MCxkZXN0Omksd2lkdGg6YSxoZWlnaHQ6cixub25CbGFja0NvbG9yOnM9NDI5NDk2NzI5NSxpbnZlcnNlRGVjb2RlOm49ITF9KXtjb25zdCBvPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1LFtnLGNdPW4/W3Msb106W28sc10sQz1hPj4zLGg9NyZhLGw9ZS5sZW5ndGg7aT1uZXcgVWludDMyQXJyYXkoaS5idWZmZXIpO2xldCBRPTA7Zm9yKGxldCBhPTA7YTxyO2ErKyl7Zm9yKGNvbnN0IGE9dCtDO3Q8YTt0Kyspe2NvbnN0IGE9dDxsP2VbdF06MjU1O2lbUSsrXT0xMjgmYT9jOmc7aVtRKytdPTY0JmE/YzpnO2lbUSsrXT0zMiZhP2M6ZztpW1ErK109MTYmYT9jOmc7aVtRKytdPTgmYT9jOmc7aVtRKytdPTQmYT9jOmc7aVtRKytdPTImYT9jOmc7aVtRKytdPTEmYT9jOmd9aWYoMD09PWgpY29udGludWU7Y29uc3QgYT10PGw/ZVt0KytdOjI1NTtmb3IobGV0IGU9MDtlPGg7ZSsrKWlbUSsrXT1hJjE8PDctZT9jOmd9cmV0dXJue3NyY1Bvczp0LGRlc3RQb3M6UX19Y2xhc3MgSnBlZ0Vycm9yIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnBlZ0Vycm9yIil9fWNsYXNzIEROTE1hcmtlckVycm9yIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJETkxNYXJrZXJFcnJvciIpO3RoaXMuc2NhbkxpbmVzPXR9fWNsYXNzIEVPSU1hcmtlckVycm9yIGV4dGVuZHMgb3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgZWk9bmV3IFVpbnQ4QXJyYXkoWzAsMSw4LDE2LDksMiwzLDEwLDE3LDI0LDMyLDI1LDE4LDExLDQsNSwxMiwxOSwyNiwzMyw0MCw0OCw0MSwzNCwyNywyMCwxMyw2LDcsMTQsMjEsMjgsMzUsNDIsNDksNTYsNTcsNTAsNDMsMzYsMjksMjIsMTUsMjMsMzAsMzcsNDQsNTEsNTgsNTksNTIsNDUsMzgsMzEsMzksNDYsNTMsNjAsNjEsNTQsNDcsNTUsNjIsNjNdKSx0aT00MDE3LGlpPTc5OSxhaT0zNDA2LHJpPTIyNzYsc2k9MTU2NyxuaT0zNzg0LG9pPTU3OTMsZ2k9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBpLGEscj0wLHM9MTY7Zm9yKDtzPjAmJiFlW3MtMV07KXMtLTtjb25zdCBuPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGc9blswXTtmb3IoaT0wO2k8cztpKyspe2ZvcihhPTA7YTxlW2ldO2ErKyl7Zz1uLnBvcCgpO2cuY2hpbGRyZW5bZy5pbmRleF09dFtyXTtmb3IoO2cuaW5kZXg+MDspZz1uLnBvcCgpO2cuaW5kZXgrKztuLnB1c2goZyk7Zm9yKDtuLmxlbmd0aDw9aTspe24ucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Zy5jaGlsZHJlbltnLmluZGV4XT1vLmNoaWxkcmVuO2c9b31yKyt9aWYoaSsxPHMpe24ucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Zy5jaGlsZHJlbltnLmluZGV4XT1vLmNoaWxkcmVuO2c9b319cmV0dXJuIG5bMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGkpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2kpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGksYSxyLHMsbixvLGcsYz0hMSl7Y29uc3QgQz1pLm1jdXNQZXJMaW5lLGg9aS5wcm9ncmVzc2l2ZSxsPXQ7bGV0IFE9MCxFPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKEU+MCl7RS0tO3JldHVybiBRPj5FJjF9UT1lW3QrK107aWYoMjU1PT09USl7Y29uc3QgYT1lW3QrK107aWYoYSl7aWYoMjIwPT09YSYmYyl7Y29uc3QgYT1yZWFkVWludDE2KGUsdCs9Mik7dCs9MjtpZihhPjAmJmEhPT1pLnNjYW5MaW5lcyl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEROTCBtYXJrZXIgKDB4RkZEQykgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiLGEpfWVsc2UgaWYoMjE3PT09YSl7aWYoYyl7Y29uc3QgZT1wKig4PT09aS5wcmVjaXNpb24/ODowKTtpZihlPjAmJk1hdGgucm91bmQoaS5zY2FuTGluZXMvZSk+PTUpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhLCBwb3NzaWJseSBjYXVzZWQgYnkgaW5jb3JyZWN0IGBzY2FuTGluZXNgIHBhcmFtZXRlciIsZSl9dGhyb3cgbmV3IEVPSU1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIil9dGhyb3cgbmV3IEpwZWdFcnJvcihgdW5leHBlY3RlZCBtYXJrZXIgJHsoUTw8OHxhKS50b1N0cmluZygxNil9YCl9fUU9NztyZXR1cm4gUT4+Pjd9ZnVuY3Rpb24gZGVjb2RlSHVmZm1hbihlKXtsZXQgdD1lO2Zvcig7Oyl7dD10W3JlYWRCaXQoKV07c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgaHVmZm1hbiBzZXF1ZW5jZSIpfX1mdW5jdGlvbiByZWNlaXZlKGUpe2xldCB0PTA7Zm9yKDtlPjA7KXt0PXQ8PDF8cmVhZEJpdCgpO2UtLX1yZXR1cm4gdH1mdW5jdGlvbiByZWNlaXZlQW5kRXh0ZW5kKGUpe2lmKDE9PT1lKXJldHVybiAxPT09cmVhZEJpdCgpPzE6LTE7Y29uc3QgdD1yZWNlaXZlKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX1sZXQgdT0wO2xldCBkLGY9MDtsZXQgcD0wO2Z1bmN0aW9uIGRlY29kZU1jdShlLHQsaSxhLHIpe2NvbnN0IHM9aSVDO3A9KGkvQ3wwKSplLnYrYTtjb25zdCBuPXMqZS5oK3I7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUscCxuKSl9ZnVuY3Rpb24gZGVjb2RlQmxvY2soZSx0LGkpe3A9aS9lLmJsb2Nrc1BlckxpbmV8MDtjb25zdCBhPWklZS5ibG9ja3NQZXJMaW5lO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsYSkpfWNvbnN0IG09YS5sZW5ndGg7bGV0IHksdyxiLEQsUyxrO2s9aD8wPT09cz8wPT09bz9mdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGUsdCl7Y29uc3QgaT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLGE9MD09PWk/MDpyZWNlaXZlQW5kRXh0ZW5kKGkpPDxnO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9YX06ZnVuY3Rpb24gZGVjb2RlRENTdWNjZXNzaXZlKGUsdCl7ZS5ibG9ja0RhdGFbdF18PXJlYWRCaXQoKTw8Z306MD09PW8/ZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChlLHQpe2lmKHU+MCl7dS0tO3JldHVybn1sZXQgaT1zO2NvbnN0IGE9bjtmb3IoO2k8PWE7KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQykscj0xNSZhLHM9YT4+NDtpZigwPT09cil7aWYoczwxNSl7dT1yZWNlaXZlKHMpKygxPDxzKS0xO2JyZWFrfWkrPTE2O2NvbnRpbnVlfWkrPXM7Y29uc3Qgbj1laVtpXTtlLmJsb2NrRGF0YVt0K25dPXJlY2VpdmVBbmRFeHRlbmQocikqKDE8PGcpO2krK319OmZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShlLHQpe2xldCBpPXM7Y29uc3QgYT1uO2xldCByLG8sYz0wO2Zvcig7aTw9YTspe2NvbnN0IGE9dCtlaVtpXSxzPWUuYmxvY2tEYXRhW2FdPDA/LTE6MTtzd2l0Y2goZil7Y2FzZSAwOm89ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtyPTE1Jm87Yz1vPj40O2lmKDA9PT1yKWlmKGM8MTUpe3U9cmVjZWl2ZShjKSsoMTw8Yyk7Zj00fWVsc2V7Yz0xNjtmPTF9ZWxzZXtpZigxIT09cil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO2Q9cmVjZWl2ZUFuZEV4dGVuZChyKTtmPWM/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbYV0pZS5ibG9ja0RhdGFbYV0rPXMqKHJlYWRCaXQoKTw8Zyk7ZWxzZXtjLS07MD09PWMmJihmPTI9PT1mPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7ZS5ibG9ja0RhdGFbYV09ZDw8ZztmPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW2FdJiYoZS5ibG9ja0RhdGFbYV0rPXMqKHJlYWRCaXQoKTw8ZykpfWkrK31pZig0PT09Zil7dS0tOzA9PT11JiYoZj0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgaT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLGE9MD09PWk/MDpyZWNlaXZlQW5kRXh0ZW5kKGkpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9YTtsZXQgcj0xO2Zvcig7cjw2NDspe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxhPTE1Jmkscz1pPj40O2lmKDA9PT1hKXtpZihzPDE1KWJyZWFrO3IrPTE2O2NvbnRpbnVlfXIrPXM7Y29uc3Qgbj1laVtyXTtlLmJsb2NrRGF0YVt0K25dPXJlY2VpdmVBbmRFeHRlbmQoYSk7cisrfX07bGV0IFIsTj0wO2NvbnN0IEc9MT09PW0/YVswXS5ibG9ja3NQZXJMaW5lKmFbMF0uYmxvY2tzUGVyQ29sdW1uOkMqaS5tY3VzUGVyQ29sdW1uO2xldCB4LFU7Zm9yKDtOPD1HOyl7Y29uc3QgaT1yP01hdGgubWluKEctTixyKTpHO2lmKGk+MCl7Zm9yKHc9MDt3PG07dysrKWFbd10ucHJlZD0wO3U9MDtpZigxPT09bSl7eT1hWzBdO2ZvcihTPTA7UzxpO1MrKyl7ZGVjb2RlQmxvY2soeSxrLE4pO04rK319ZWxzZSBmb3IoUz0wO1M8aTtTKyspe2Zvcih3PTA7dzxtO3crKyl7eT1hW3ddO3g9eS5oO1U9eS52O2ZvcihiPTA7YjxVO2IrKylmb3IoRD0wO0Q8eDtEKyspZGVjb2RlTWN1KHksayxOLGIsRCl9TisrfX1FPTA7Uj1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighUilicmVhaztpZihSLmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke2k+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtSLmludmFsaWR9YCk7dD1SLm9mZnNldH1pZighKFIubWFya2VyPj02NTQ4OCYmUi5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LWx9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxpKXtjb25zdCBhPWUucXVhbnRpemF0aW9uVGFibGUscj1lLmJsb2NrRGF0YTtsZXQgcyxuLG8sZyxjLEMsaCxsLFEsRSx1LGQsZixwLG0seSx3O2lmKCFhKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7UT1yW3QrZV07RT1yW3QrZSsxXTt1PXJbdCtlKzJdO2Q9clt0K2UrM107Zj1yW3QrZSs0XTtwPXJbdCtlKzVdO209clt0K2UrNl07eT1yW3QrZSs3XTtRKj1hW2VdO2lmKDAhPShFfHV8ZHxmfHB8bXx5KSl7RSo9YVtlKzFdO3UqPWFbZSsyXTtkKj1hW2UrM107Zio9YVtlKzRdO3AqPWFbZSs1XTttKj1hW2UrNl07eSo9YVtlKzddO3M9b2kqUSsxMjg+Pjg7bj1vaSpmKzEyOD4+ODtvPXU7Zz1tO2M9Z2kqKEUteSkrMTI4Pj44O2w9Z2kqKEUreSkrMTI4Pj44O0M9ZDw8NDtoPXA8PDQ7cz1zK24rMT4+MTtuPXMtbjt3PW8qbmkrZypzaSsxMjg+Pjg7bz1vKnNpLWcqbmkrMTI4Pj44O2c9dztjPWMraCsxPj4xO2g9Yy1oO2w9bCtDKzE+PjE7Qz1sLUM7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9YypyaStsKmFpKzIwNDg+PjEyO2M9YyphaS1sKnJpKzIwNDg+PjEyO2w9dzt3PUMqaWkraCp0aSsyMDQ4Pj4xMjtDPUMqdGktaCppaSsyMDQ4Pj4xMjtoPXc7aVtlXT1zK2w7aVtlKzddPXMtbDtpW2UrMV09bitoO2lbZSs2XT1uLWg7aVtlKzJdPW8rQztpW2UrNV09by1DO2lbZSszXT1nK2M7aVtlKzRdPWctY31lbHNle3c9b2kqUSs1MTI+PjEwO2lbZV09dztpW2UrMV09dztpW2UrMl09dztpW2UrM109dztpW2UrNF09dztpW2UrNV09dztpW2UrNl09dztpW2UrN109d319Zm9yKGxldCBlPTA7ZTw4OysrZSl7UT1pW2VdO0U9aVtlKzhdO3U9aVtlKzE2XTtkPWlbZSsyNF07Zj1pW2UrMzJdO3A9aVtlKzQwXTttPWlbZSs0OF07eT1pW2UrNTZdO2lmKDAhPShFfHV8ZHxmfHB8bXx5KSl7cz1vaSpRKzIwNDg+PjEyO249b2kqZisyMDQ4Pj4xMjtvPXU7Zz1tO2M9Z2kqKEUteSkrMjA0OD4+MTI7bD1naSooRSt5KSsyMDQ4Pj4xMjtDPWQ7aD1wO3M9NDExMisocytuKzE+PjEpO249cy1uO3c9bypuaStnKnNpKzIwNDg+PjEyO289bypzaS1nKm5pKzIwNDg+PjEyO2c9dztjPWMraCsxPj4xO2g9Yy1oO2w9bCtDKzE+PjE7Qz1sLUM7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9YypyaStsKmFpKzIwNDg+PjEyO2M9YyphaS1sKnJpKzIwNDg+PjEyO2w9dzt3PUMqaWkraCp0aSsyMDQ4Pj4xMjtDPUMqdGktaCppaSsyMDQ4Pj4xMjtoPXc7UT1zK2w7eT1zLWw7RT1uK2g7bT1uLWg7dT1vK0M7cD1vLUM7ZD1nK2M7Zj1nLWM7UTwxNj9RPTA6UT49NDA4MD9RPTI1NTpRPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O3U8MTY/dT0wOnU+PTQwODA/dT0yNTU6dT4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDt5PDE2P3k9MDp5Pj00MDgwP3k9MjU1Onk+Pj00O3JbdCtlXT1RO3JbdCtlKzhdPUU7clt0K2UrMTZdPXU7clt0K2UrMjRdPWQ7clt0K2UrMzJdPWY7clt0K2UrNDBdPXA7clt0K2UrNDhdPW07clt0K2UrNTZdPXl9ZWxzZXt3PW9pKlErODE5Mj4+MTQ7dz13PC0yMDQwPzA6dz49MjAyND8yNTU6dysyMDU2Pj40O3JbdCtlXT13O3JbdCtlKzhdPXc7clt0K2UrMTZdPXc7clt0K2UrMjRdPXc7clt0K2UrMzJdPXc7clt0K2UrNDBdPXc7clt0K2UrNDhdPXc7clt0K2UrNTZdPXd9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBpPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHI9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxpO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHIpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGk9dCl7Y29uc3QgYT1lLmxlbmd0aC0xO2xldCByPWk8dD9pOnQ7aWYodD49YSlyZXR1cm4gbnVsbDtjb25zdCBzPXJlYWRVaW50MTYoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG49cmVhZFVpbnQxNihlLHIpO2Zvcig7IShuPj02NTQ3MiYmbjw9NjU1MzQpOyl7aWYoKytyPj1hKXJldHVybiBudWxsO249cmVhZFVpbnQxNihlLHIpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpuLG9mZnNldDpyfX1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PXJlYWRVaW50MTYoZSxyKTtyKz0yO2xldCBpPXIrdC0yO2NvbnN0IGE9ZmluZE5leHRGaWxlTWFya2VyKGUsaSxyKTtpZihhPy5pbnZhbGlkKXt3YXJuKCJyZWFkRGF0YUJsb2NrIC0gaW5jb3JyZWN0IGxlbmd0aCwgY3VycmVudCBtYXJrZXIgaXM6ICIrYS5pbnZhbGlkKTtpPWEub2Zmc2V0fWNvbnN0IHM9ZS5zdWJhcnJheShyLGkpO3IrPXMubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLGk9TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKTtmb3IoY29uc3QgYSBvZiBlLmNvbXBvbmVudHMpe2NvbnN0IHI9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgpKmEuaC9lLm1heEgpLHM9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNjYW5MaW5lcy84KSphLnYvZS5tYXhWKSxuPXQqYS5oLG89NjQqKGkqYS52KSoobisxKTthLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKTthLmJsb2Nrc1BlckxpbmU9cjthLmJsb2Nrc1BlckNvbHVtbj1zfWUubWN1c1BlckxpbmU9dDtlLm1jdXNQZXJDb2x1bW49aX1sZXQgaSxhLHI9MCxzPW51bGwsbj1udWxsLG89MDtjb25zdCBnPVtdLGM9W10sQz1bXTtsZXQgaD1yZWFkVWludDE2KGUscik7cis9MjtpZig2NTQ5NiE9PWgpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO2g9cmVhZFVpbnQxNihlLHIpO3IrPTI7QTpmb3IoOzY1NDk3IT09aDspe2xldCBsLFEsRTtzd2l0Y2goaCl7Y2FzZSA2NTUwNDpjYXNlIDY1NTA1OmNhc2UgNjU1MDY6Y2FzZSA2NTUwNzpjYXNlIDY1NTA4OmNhc2UgNjU1MDk6Y2FzZSA2NTUxMDpjYXNlIDY1NTExOmNhc2UgNjU1MTI6Y2FzZSA2NTUxMzpjYXNlIDY1NTE0OmNhc2UgNjU1MTU6Y2FzZSA2NTUxNjpjYXNlIDY1NTE3OmNhc2UgNjU1MTg6Y2FzZSA2NTUxOTpjYXNlIDY1NTM0OmNvbnN0IHU9cmVhZERhdGFCbG9jaygpOzY1NTA0PT09aCYmNzQ9PT11WzBdJiY3MD09PXVbMV0mJjczPT09dVsyXSYmNzA9PT11WzNdJiYwPT09dVs0XSYmKHM9e3ZlcnNpb246e21ham9yOnVbNV0sbWlub3I6dVs2XX0sZGVuc2l0eVVuaXRzOnVbN10seERlbnNpdHk6dVs4XTw8OHx1WzldLHlEZW5zaXR5OnVbMTBdPDw4fHVbMTFdLHRodW1iV2lkdGg6dVsxMl0sdGh1bWJIZWlnaHQ6dVsxM10sdGh1bWJEYXRhOnUuc3ViYXJyYXkoMTQsMTQrMyp1WzEyXSp1WzEzXSl9KTs2NTUxOD09PWgmJjY1PT09dVswXSYmMTAwPT09dVsxXSYmMTExPT09dVsyXSYmOTg9PT11WzNdJiYxMDE9PT11WzRdJiYobj17dmVyc2lvbjp1WzVdPDw4fHVbNl0sZmxhZ3MwOnVbN108PDh8dVs4XSxmbGFnczE6dVs5XTw8OHx1WzEwXSx0cmFuc2Zvcm1Db2RlOnVbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBkPXJlYWRVaW50MTYoZSxyKTtyKz0yO2NvbnN0IGY9ZCtyLTI7bGV0IHA7Zm9yKDtyPGY7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+ND09MClmb3IoUT0wO1E8NjQ7USsrKXtwPWVpW1FdO2lbcF09ZVtyKytdfWVsc2V7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoUT0wO1E8NjQ7USsrKXtwPWVpW1FdO2lbcF09cmVhZFVpbnQxNihlLHIpO3IrPTJ9fWdbMTUmdF09aX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihpKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO3IrPTI7aT17fTtpLmV4dGVuZGVkPTY1NDczPT09aDtpLnByb2dyZXNzaXZlPTY1NDc0PT09aDtpLnByZWNpc2lvbj1lW3IrK107Y29uc3QgbT1yZWFkVWludDE2KGUscik7cis9MjtpLnNjYW5MaW5lcz10fHxtO2kuc2FtcGxlc1BlckxpbmU9cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5jb21wb25lbnRzPVtdO2kuY29tcG9uZW50SWRzPXt9O2NvbnN0IHk9ZVtyKytdO2xldCB3PTAsYj0wO2ZvcihsPTA7bDx5O2wrKyl7Y29uc3QgdD1lW3JdLGE9ZVtyKzFdPj40LHM9MTUmZVtyKzFdO3c8YSYmKHc9YSk7YjxzJiYoYj1zKTtjb25zdCBuPWVbcisyXTtFPWkuY29tcG9uZW50cy5wdXNoKHtoOmEsdjpzLHF1YW50aXphdGlvbklkOm4scXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2kuY29tcG9uZW50SWRzW3RdPUUtMTtyKz0zfWkubWF4SD13O2kubWF4Vj1iO3ByZXBhcmVDb21wb25lbnRzKGkpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgRD1yZWFkVWludDE2KGUscik7cis9Mjtmb3IobD0yO2w8RDspe2NvbnN0IHQ9ZVtyKytdLGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCBhPTA7Zm9yKFE9MDtRPDE2O1ErKyxyKyspYSs9aVtRXT1lW3JdO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoYSk7Zm9yKFE9MDtRPGE7USsrLHIrKylzW1FdPWVbcl07bCs9MTcrYTsodD4+ND09MD9DOmMpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGkscyl9YnJlYWs7Y2FzZSA2NTUwMTpyKz0yO2E9cmVhZFVpbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBTPTE9PSsrbyYmIXQ7cis9Mjtjb25zdCBrPWVbcisrXSxSPVtdO2ZvcihsPTA7bDxrO2wrKyl7Y29uc3QgdD1lW3IrK10sYT1pLmNvbXBvbmVudElkc1t0XSxzPWkuY29tcG9uZW50c1thXTtzLmluZGV4PXQ7Y29uc3Qgbj1lW3IrK107cy5odWZmbWFuVGFibGVEQz1DW24+PjRdO3MuaHVmZm1hblRhYmxlQUM9Y1sxNSZuXTtSLnB1c2gocyl9Y29uc3QgTj1lW3IrK10sRz1lW3IrK10seD1lW3IrK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLHIsaSxSLGEsTixHLHg+PjQsMTUmeCxTKTtyKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgQX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6cis9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLTticmVhaztkZWZhdWx0OmNvbnN0IFU9ZmluZE5leHRGaWxlTWFya2VyKGUsci0yLHItMyk7aWYoVT8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIitVLmludmFsaWQpO3I9VS5vZmZzZXQ7YnJlYWt9aWYoIVV8fHI+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBBfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2gudG9TdHJpbmcoMTYpKX1oPXJlYWRVaW50MTYoZSxyKTtyKz0yfWlmKCFpKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1pLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWkuc2NhbkxpbmVzO3RoaXMuamZpZj1zO3RoaXMuYWRvYmU9bjt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaS5jb21wb25lbnRzKXtjb25zdCB0PWdbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvaS5tYXhILHNjYWxlWTplLnYvaS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpPSExKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsbixvLGcsYyxDLGgsbCxRLEUsdSxkPTA7Y29uc3QgZj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHA9ZSp0KmYsbT1uZXcgVWludDhDbGFtcGVkQXJyYXkocCkseT1uZXcgVWludDMyQXJyYXkoZSksdz00Mjk0OTY3Mjg4O2xldCBiO2ZvcihoPTA7aDxmO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07bj1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtkPWg7dT1zLm91dHB1dDtnPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKG4hPT1iKXtmb3IoYz0wO2M8ZTtjKyspe2w9MHxjKm47eVtjXT0obCZ3KTw8M3w3Jmx9Yj1ufWZvcihDPTA7Qzx0O0MrKyl7bD0wfEMqbztFPWcqKGwmdyl8KDcmbCk8PDM7Zm9yKGM9MDtjPGU7YysrKXttW2RdPXVbRSt5W2NdXTtkKz1mfX19bGV0IEQ9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2l8fDQhPT1mfHxEfHwoRD1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoRClmb3IoaD0wO2g8cDspZm9yKGw9MCxRPTA7bDxmO2wrKyxoKyssUSs9MiltW2hdPShtW2hdKkRbUV0+PjgpK0RbUSsxXTtyZXR1cm4gbX1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9Myl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09dC0xNzkuNDU2KzEuNDAyKmE7ZVtyKzFdPXQrMTM1LjQ1OS0uMzQ0KmktLjcxNCphO2VbcisyXT10LTIyNi44MTYrMS43NzIqaX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgaT0wLGE9MCxyPWUubGVuZ3RoO2k8cjtpKz0zLGErPTQpe2NvbnN0IHI9ZVtpXSxzPWVbaSsxXSxuPWVbaSsyXTt0W2FdPXItMTc5LjQ1NisxLjQwMipuO3RbYSsxXT1yKzEzNS40NTktLjM0NCpzLS43MTQqbjt0W2ErMl09ci0yMjYuODE2KzEuNzcyKnM7dFthKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT1pKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSppKy4wMDA0MzcxMzA0NzU5MjYyMzIqYS01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqci0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrYSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqYSsuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KnIrMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypyKy40ODM1NzA4ODQ1MTI2NSkrciooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcisuNDg0NzkxNTYxNDkwNzc2KTtlW3MrK109MTA3LjI2ODAzOTM5NzcyNCtpKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmktLjAwMDY0MDk5MjAxODI5Nzk0NSphKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KnItLjE3NjQ5MTc5MjQ2Mjg3NSkrYSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqYSsuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKnItLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KnIrLjI1ODAyOTEwMjA2ODQ1KStyKigtLjAwMDMxODkxMzExNzU4ODMyOCpyLS4yMTM3NDI0MDAzMjM2NjUpO2VbcysrXT1pKigtLjAwMDU3MDExNTE5Njk3MzY3NyppLTI2MzQwOTA1MTAwNDU4OWUtMTkqYSsuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipyKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NythKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSphLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKnItLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KnIrLjExNjkzNTAyMDQ2NTE0NSkrciooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPWEqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmErLjAwMDQzNzEzMDQ3NTkyNjIzMipyLTU0MDgwNjEwMDY0NTk5ZS0xOCppKy4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtyKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypyKy4wMDA4MTcwNzY5MTEzNDY2MjUqaS0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KStpKiguMDAwOTYxMjUwMTg0MTMwNjg4KmktLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K2EqKDIxOTkyNzEwNDUyNTc0MWUtMTkqYS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KnIrLjAwMDY1OTM5NzAwMTI0NTU3NyppKy4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KStyKigtLjAwMDc3ODI2OTk0MTUxMzY4MypyKy4wMDEzMDg3MjI2MTQwODI3NSppKy4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKStpKiguMDAxMjY5MzUzNjgxMTQ4NDMqaS0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPWEqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmEtMjYzNDA5MDUxMDA0NTg5ZS0xOSpyKy4wMDIwNzQxMDg4MTE1MDEyKmktLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K3IqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KnItLjAwMDEzMjY4OTA0Mzk2MTQ0NippKy4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KStpKiguMDAxNzQ0MTgxMzI5Mjc1ODIqaS0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCppKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmkrLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KnItMS4xMTg1NjExODY3MjAzOTM3KStpKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqaS04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnItLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NipyKy4wNjg2NzQyMjM4NTk1MzQ1KS1yKiguMDAwMzM2MTk3MTc3NjE4MzkzNypyKy43NDMwNjU5MTUxMzQyMjU0KTtlW3MrK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqaSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMipyLS4zMTA5Njg5NTg3NTE1ODc1KStpKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmkrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NipyLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypyLS4wOTc1MTkyNzc3NDcyODkzMyktciooLjAwMDMxODkxMzExNzU4ODMyODEqcisuNzM2NDg4MzgwNzczMzE2OCk7ZVtzKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqaSsuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipyLS4wNTU2MjE4Njk4MDI2NDAzNCkraSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmkrLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypyLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpyLS43NTkxNDU0NjQ5NzQ5NjA5KS1yKiguMDAwMzQzNTMxOTk2NTEwNTU1MypyKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT0yNTUraSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmkrLjAwMDgzNzkyNjIxMjEwMTM3MjcqYSsuMDAwMjg5NDcxODE4ODY0MzI5NCpyKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2EqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSphLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKnItLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK3IqKC0zODc4MDk5MjEyODY5MzYzZS0yMCpyLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUraSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmkrLjAwMDkyNDUzNzEzMjU3MzU4NSphKy4wMDAxMDU2NzM1OTYxODY4MzU5MypyKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2EqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqYSsuMDAwMjcwMjg0NTI1MzUzNDcxNCpyKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK3IqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKnIrLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2kqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSppKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSphKy4wMDA0NzUxOTg1MDk3NTgzNTg5KnItMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KSthKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqYSsuMDAwOTY5MjIzOTEzMDcyNTE4NipyKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKStyKig1LjA2ODg4MjkxNDA2ODc2OWUtNypyKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6aT0hMSxmb3JjZVJHQjphPSExLGlzU291cmNlUERGOnI9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxyKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoaXx8YSkpe2NvbnN0IGU9cy5sZW5ndGgqKGk/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgYT0wO2lmKGkpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT02NTc5MyplW2ldfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT0xNjg0MzAwOCplW2ldfDI1NX0ocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gaT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTphP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aC0xO3Q8aTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfWNvbnN0IHQ9e2RlY29kZVRyYW5zZm9ybTp2b2lkIDAsY29sb3JUcmFuc2Zvcm06dm9pZCAwfSxpPXRoaXMuZGljdC5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKCh0aGlzLmZvcmNlUkdCQXx8dGhpcy5mb3JjZVJHQikmJkFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LGE9aS5sZW5ndGgscj1uZXcgSW50MzJBcnJheShhKTtsZXQgcz0hMTtjb25zdCBuPSgxPDxlKS0xO2ZvcihsZXQgZT0wO2U8YTtlKz0yKXtyW2VdPTI1NiooaVtlKzFdLWlbZV0pfDA7cltlKzFdPWlbZV0qbnwwOzI1Nj09PXJbZV0mJjA9PT1yW2UrMV18fChzPSEwKX1zJiYodC5kZWNvZGVUcmFuc2Zvcm09cil9aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiQ29sb3JUcmFuc2Zvcm0iKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodC5jb2xvclRyYW5zZm9ybT1lKX1jb25zdCBhPW5ldyBKcGVnSW1hZ2UodCk7YS5wYXJzZShlKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQkE6dGhpcy5mb3JjZVJHQkEsZm9yY2VSR0I6dGhpcy5mb3JjZVJHQixpc1NvdXJjZVBERjohMH0pO3RoaXMuYnVmZmVyPXI7dGhpcy5idWZmZXJMZW5ndGg9ci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDQ5NzkpO3ZhciBJaSxjaT0oSWk9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmM6dm9pZCAwLGZ1bmN0aW9uKGU9e30pe3ZhciB0LGksYT1lO25ldyBQcm9taXNlKCgoZSxhKT0+e3Q9ZTtpPWF9KSk7YS5kZWNvZGU9ZnVuY3Rpb24oZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6aT0hMSxzbWFza0luRGF0YTpyPSExfSl7Y29uc3Qgcz1lLmxlbmd0aCxuPWEuX21hbGxvYyhzKTthLkhFQVBVOC5zZXQoZSxuKTtjb25zdCBvPWEuX2pwMl9kZWNvZGUobixzLHQ+MD90OjAsISFpLCEhcik7YS5fZnJlZShuKTtpZihvKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOmd9PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZ307dmFyIHIscz1PYmplY3QuYXNzaWduKHt9LGEpLG49Ii4vdGhpcy5wcm9ncmFtIixvPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihvPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtJaSYmKG89SWkpO289by5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm8uc3Vic3RyKDAsby5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBnLGMsQyxoLGwsUT1hLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLEU9YS5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oYSxzKTtzPW51bGw7YS5hcmd1bWVudHMmJmEuYXJndW1lbnRzO2EudGhpc1Byb2dyYW0mJihuPWEudGhpc1Byb2dyYW0pO2EucXVpdCYmYS5xdWl0O2Eud2FzbUJpbmFyeSYmKGc9YS53YXNtQmluYXJ5KTtmdW5jdGlvbiB0cnlQYXJzZUFzRGF0YVVSSShlKXtpZihpc0RhdGFVUkkoZSkpcmV0dXJuIGZ1bmN0aW9uIGludEFycmF5RnJvbUJhc2U2NChlKXtmb3IodmFyIHQ9YXRvYihlKSxpPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxhPTA7YTx0Lmxlbmd0aDsrK2EpaVthXT10LmNoYXJDb2RlQXQoYSk7cmV0dXJuIGl9KGUuc2xpY2UoYi5sZW5ndGgpKX1mdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PWg9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9bD1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIHUsZD1bXSxmPVtdLHA9W10sbT0wLHk9bnVsbCx3PW51bGwsYj0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChiKTtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09dSYmZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZyk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDtpZihyKXJldHVybiByKGUpO3Rocm93J3N5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkOiB5b3UgY2FuIHByZWxvYWQgaXQgdG8gTW9kdWxlWyJ3YXNtQmluYXJ5Il0gbWFudWFsbHksIG9yIGVtY2MucHkgd2lsbCBkbyB0aGF0IGZvciB5b3Ugd2hlbiBnZW5lcmF0aW5nIEhUTUwgKGJ1dCBub3QgSlMpJ30oZSk7aT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGEpO3JldHVybltuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaSx0KSxpXX12YXIgY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKGEpfTthLm5vRXhpdFJ1bnRpbWU7dmFyIEQsZ3Jvd01lbW9yeT1lPT57dmFyIHQ9KGUtYy5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzY7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LFM9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpufHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gUyl2b2lkIDA9PT1TW3RdP2RlbGV0ZSBlW3RdOmVbdF09U1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LGs9W251bGwsW10sW11dLFI9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsVVRGOEFycmF5VG9TdHJpbmc9KGUsdCxpKT0+e2Zvcih2YXIgYT10K2kscj10O2Vbcl0mJiEocj49YSk7KSsrcjtpZihyLXQ+MTYmJmUuYnVmZmVyJiZSKXJldHVybiBSLmRlY29kZShlLnN1YmFycmF5KHQscikpO2Zvcih2YXIgcz0iIjt0PHI7KXt2YXIgbj1lW3QrK107aWYoMTI4Jm4pe3ZhciBvPTYzJmVbdCsrXTtpZigxOTIhPSgyMjQmbikpe3ZhciBnPTYzJmVbdCsrXTtpZigobj0yMjQ9PSgyNDAmbik/KDE1Jm4pPDwxMnxvPDw2fGc6KDcmbik8PDE4fG88PDEyfGc8PDZ8NjMmZVt0KytdKTw2NTUzNilzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO2Vsc2V7dmFyIGM9bi02NTUzNjtzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGM+PjEwLDU2MzIwfDEwMjMmYyl9fWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZSgoMzEmbik8PDZ8byl9ZWxzZSBzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiBzfSxwcmludENoYXI9KGUsdCk9Pnt2YXIgaT1rW2VdO2lmKDA9PT10fHwxMD09PXQpeygxPT09ZT9ROkUpKFVURjhBcnJheVRvU3RyaW5nKGksMCkpO2kubGVuZ3RoPTB9ZWxzZSBpLnB1c2godCl9LFVURjhUb1N0cmluZz0oZSx0KT0+ZT9VVEY4QXJyYXlUb1N0cmluZyhoLGUsdCk6IiIsTj17YzooZSx0LGkpPT5oLmNvcHlXaXRoaW4oZSx0LHQraSksZzpmdW5jdGlvbiBfY29weV9waXhlbHNfMShlLHQpe2U+Pj0yO2NvbnN0IGk9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2kuc2V0KHIpfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18zKGUsdCxpLHIpe2U+Pj0yO3Q+Pj0yO2k+Pj0yO2NvbnN0IHM9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqciksbj1hLkhFQVAzMi5zdWJhcnJheShlLGUrciksbz1hLkhFQVAzMi5zdWJhcnJheSh0LHQrciksZz1hLkhFQVAzMi5zdWJhcnJheShpLGkrcik7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7c1szKmVdPW5bZV07c1szKmUrMV09b1tlXTtzWzMqZSsyXT1nW2VdfX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfNChlLHQsaSxyLHMpe2U+Pj0yO3Q+Pj0yO2k+Pj0yO3I+Pj0yO2NvbnN0IG49YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqcyksbz1hLkhFQVAzMi5zdWJhcnJheShlLGUrcyksZz1hLkhFQVAzMi5zdWJhcnJheSh0LHQrcyksYz1hLkhFQVAzMi5zdWJhcnJheShpLGkrcyksQz1hLkhFQVAzMi5zdWJhcnJheShyLHIrcyk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7bls0KmVdPW9bZV07bls0KmUrMV09Z1tlXTtuWzQqZSsyXT1jW2VdO25bNCplKzNdPUNbZV19fSxrOmU9Pnt2YXIgdD1oLmxlbmd0aCxpPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+aSlyZXR1cm4hMTtmb3IodmFyIGEscixzPTE7czw9NDtzKj0yKXt2YXIgbj10KigxKy4yL3MpO249TWF0aC5taW4obixlKzEwMDY2MzI5Nik7dmFyIG89TWF0aC5taW4oaSwoYT1NYXRoLm1heChlLG4pKSsoKHI9NjU1MzYpLWElciklcik7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0sbDooZSx0KT0+e3ZhciBpPTA7Z2V0RW52U3RyaW5ncygpLmZvckVhY2goKChhLHIpPT57dmFyIHM9dCtpO2xbZSs0KnI+PjJdPXM7KChlLHQpPT57Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpQ1t0KytdPWUuY2hhckNvZGVBdChpKTtDW3RdPTB9KShhLHMpO2krPWEubGVuZ3RoKzF9KSk7cmV0dXJuIDB9LG06KGUsdCk9Pnt2YXIgaT1nZXRFbnZTdHJpbmdzKCk7bFtlPj4yXT1pLmxlbmd0aDt2YXIgYT0wO2kuZm9yRWFjaCgoZT0+YSs9ZS5sZW5ndGgrMSkpO2xbdD4+Ml09YTtyZXR1cm4gMH0sbjplPT41MixqOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxpLGEscil7cmV0dXJuIDcwfSxiOihlLHQsaSxhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPGk7cysrKXt2YXIgbj1sW3Q+PjJdLG89bFt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxoW24rZ10pO3IrPW99bFthPj4yXT1yO3JldHVybiAwfSxvOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2ZvcihsZXQgZT0wO2U8dDtlKyspe2lbNCplXT1pWzQqZSsxXT1pWzQqZSsyXT1yW2VdO2lbNCplKzNdPTI1NX19LGk6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSx0LGkpe2U+Pj0yO3Q+Pj0yO2NvbnN0IHI9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1hLkhFQVAzMi5zdWJhcnJheShlLGUraSksbj1hLkhFQVAzMi5zdWJhcnJheSh0LHQraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109bltlXX19LGQ6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGg6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsdCxpLHIpe2U+Pj0yO3Q+Pj0yO2k+Pj0yO2NvbnN0IHM9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqciksbj1hLkhFQVAzMi5zdWJhcnJheShlLGUrciksbz1hLkhFQVAzMi5zdWJhcnJheSh0LHQrciksZz1hLkhFQVAzMi5zdWJhcnJheShpLGkrcik7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7c1s0KmVdPW5bZV07c1s0KmUrMV09b1tlXTtzWzQqZSsyXT1nW2VdO3NbNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpO2EuZXJyb3JNZXNzYWdlcz9hLmVycm9yTWVzc2FnZXMrPSJcbiIrdDphLmVycm9yTWVzc2FnZXM9dH19LEc9ZnVuY3Rpb24gY3JlYXRlV2FzbSgpe3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6Tn19KCk7ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbmNlKGUsdCl7Rz1lLmV4cG9ydHM7Yz1HLnA7dXBkYXRlTWVtb3J5Vmlld3MoKTshZnVuY3Rpb24gYWRkT25Jbml0KGUpe2YudW5zaGlmdChlKX0oRy5xKTshZnVuY3Rpb24gcmVtb3ZlUnVuRGVwZW5kZW5jeShlKXttLS07YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4obSk7aWYoMD09bSl7aWYobnVsbCE9PXkpe2NsZWFySW50ZXJ2YWwoeSk7eT1udWxsfWlmKHcpe3ZhciB0PXc7dz1udWxsO3QoKX19fSgpO3JldHVybiBHfSFmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGUpe20rKzthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/LihtKX0oKTtpZihhLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIGEuaW5zdGFudGlhdGVXYXNtKGUscmVjZWl2ZUluc3RhbmNlKX1jYXRjaChlKXtFKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke2V9YCk7aShlKX11fHwodT0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LEFHRnpiUUVBQUFBQnpnRWFZQU4vZjM4QmYyQUVmMzkvZndGL1lBRi9BR0FDZjM4QVlBRi9BWDlnQTM5L2Z3QmdBbjkvQVg5Z0JIOS9mMzhBWUFOL2ZuOEJmbUFGZjM5L2YzOEJmMkFDZm44QmYyQUNmbjhCZm1BRmYzOS9mMzhBWUFOL2ZuOEJmMkFBQVg5Z0IzOS9mMzkvZjM4QmYyQUpmMzkvZjM5L2YzOS9BWDlnQzM5L2YzOS9mMzkvZjM5L0FYOWdCbjkvZjM5L2Z3Ri9ZQVovZkg5L2YzOEJmMkFJZjM5L2YzOS9mMzhBWUFoL2YzOS9mMzkvZndGL1lBQUFZQVovZjM5L2YzOEFZQWQvZjM5L2YzOS9BR0FDZkg4QmZBSmJEd0ZoQVdFQUFnRmhBV0lBQVFGaEFXTUFCUUZoQVdRQUFnRmhBV1VBREFGaEFXWUFCd0ZoQVdjQUF3RmhBV2dBQndGaEFXa0FCUUZoQVdvQUNRRmhBV3NBQkFGaEFXd0FCZ0ZoQVcwQUJnRmhBVzRBQkFGaEFXOEFBd1BBQWI0QkJ3SUZBQVlFQUFVR0JBVUJCQXdGRkFZQ0FnSUNBQVlRRVFRQ0NoSUNCUUlFQndRQ0RnSUNEUVlDRlFNSEFBQUVBd0VXQ1FrREFBa0dBUVFFQlFVT0R3RUJBd0FEQmdJUUJCY1lBZ2NHQXdjSEFRRUNBQVFaQkFZSEJBOE1BQVFDQWdJQUJnQUdBUUVCQVFFQkFRRUFBQUFBQUFZREFnSUNBd01EQXdNQUF4TUlCQTRFQUFnREF3a0VDQW9MQ0FBQUFRRUJBUUVCQVFFTkFRQUVCQVVKRHdFU0VRRUFBQVlEQXdFRkJRVUZCUVVGQlFFTEFRRUJBUUVCQVFFQkNnUUZBWEFCYm00RkJ3RUJnZ0tBZ0FJR0NBRi9BVUdRMlFVTEJ4c0dBWEFDQUFGeEFFRUJjZ0NZQVFGekFCQUJkQUVBQVhVQWx3RUp2UUVCQUVFQkMyMVJ6QUhDQVhOek5xY0JuQUdaQVlzQmlnR0pBWWdCaHdHR0FZVUJoQUZTZ1FHQUFYOStmWHg3ZW5sNGQzWjF5d0hLQWNrQnlBSEhBY1lCUU1VQnhBRkFRTU1Cd1FIQUFiOEJ2Z0c5QWJ3QnV3RzZBYmtCc3dHb0FhWUJwUUdrQWFNQm9nR2hBYUFCbndHZUFaMEJtd0dhQVVsS1RGSklnd0ZUT0ZDQ0FVOUZSazRySjZzQnFnR3NBYlFCdUFHMUFhOEJxUUd0QWE0QnRnRzNBWEN3QWJFQnNnRlJsZ0dWQVl3QmpnR05BWklCa3dHVUFaQUJqd0VLa1pvT3ZnR0NBZ0VEZnlNQVFaQUVheUlFSkFBQ1FDQUFSUTBBQWtBQ1FBSkFBa0FnQVVFQmF3NEVBQUVFQWdRTElBQkJER29oQVF3Q0N5QUFRUkJxSVFFZ0FFRUVhaUVBREFFTElBQkJGR29oQVNBQVFRaHFJUUFMSUFFb0FnQWlCVVVOQUNBQ1JRMEFJQUFvQWdBaEJpQUVRUUJCZ0FRUUZTSUJJQU0yQW93RUl3QkJvQUZySWdBa0FDQUFJQUUyQXBRQklBQkIvd00yQXBnQklBQkJBRUdRQVJBVklnQkJmellDVENBQVFlWUFOZ0lrSUFCQmZ6WUNVQ0FBSUFCQm53RnFOZ0lzSUFBZ0FFR1VBV28yQWxRZ0FVRUFPZ0FBSUFBZ0FpQURRZWNBUWVnQUVHc2dBRUdnQVdva0FDQUJRUUE2QVA4RElBRWdCaUFGRVFNQUN5QUVRWkFFYWlRQUM5QUNBUVYvSUFBRVFDQUFRUVJySWdNb0FnQWlCQ0VCSUFNaEFpQUFRUWhyS0FJQUlnQWdBRUYrY1NJQVJ3UkFJQUlnQUdzaUFpZ0NCQ0lCSUFJb0FnZ2lCVFlDQ0NBRklBRTJBZ1FnQUNBRWFpRUJDeUFESUFScUlnQW9BZ0FpQXlBQUlBTnFRUVJyS0FJQVJ3UkFJQUFvQWdRaUJDQUFLQUlJSWdBMkFnZ2dBQ0FFTmdJRUlBRWdBMm9oQVFzZ0FpQUJOZ0lBSUFJZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBQ0FuOGdBaWdDQUVFSWF5SUFRZjhBVFFSQUlBQkJBM1pCQVdzTUFRc2dBR2NoQXlBQVFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUFRZjhmVFEwQUdrRS9JQUJCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdBZ0FFRS9UeHNMSWdGQkJIUWlBRUdneHdGcU5nSUVJQUlnQUVHb3h3RnFJZ0FvQWdBMkFnZ2dBQ0FDTmdJQUlBSW9BZ2dnQWpZQ0JFR296d0ZCcU04QktRTUFRZ0VnQWEyR2hEY0RBQXNMeVFJQkJIOGdBVUVBTmdJQUFrQWdBa1VOQUNBQklBSnFJUU1DUUNBQ1FSQkpCRUFnQUNFQkRBRUxBa0FnQUNBQ2FpQUJUUTBBSUFBZ0EwOE5BQ0FBSVFFTUFRc2dBMEVRYXlFR0lBQWdBa0Z3Y1NJRmFpRUJJQU1nQldzaEF3TkFJQVlnQkdzZ0FDQUVhdjBBQUFEOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOURROE9EUXdMQ2drSUJ3WUZCQU1DQVFEOUN3QUFJQVJCRUdvaUJDQUZSdzBBQ3lBQ0lBVkdEUUVMQWtBZ0FrRURjU0lHUlFSQUlBVWhCQXdCQzBFQUlRQWdCU0VFQTBBZ0EwRUJheUlESUFFdEFBQTZBQUFnQkVFQmFpRUVJQUZCQVdvaEFTQUFRUUZxSWdBZ0JrY05BQXNMSUFVZ0FtdEJmRXNOQUFOQUlBTkJBV3NnQVMwQUFEb0FBQ0FEUVFKcklBRXRBQUU2QUFBZ0EwRURheUFCTFFBQ09nQUFJQU5CQkdzaUF5QUJMUUFET2dBQUlBRkJCR29oQVNBRVFRUnFJZ1FnQWtjTkFBc0xDNEFFQVFOL0lBSkJnQVJQQkVBZ0FDQUJJQUlRQWlBQUR3c2dBQ0FDYWlFREFrQWdBQ0FCYzBFRGNVVUVRQUpBSUFCQkEzRkZCRUFnQUNFQ0RBRUxJQUpGQkVBZ0FDRUNEQUVMSUFBaEFnTkFJQUlnQVMwQUFEb0FBQ0FCUVFGcUlRRWdBa0VCYWlJQ1FRTnhSUTBCSUFJZ0Ewa05BQXNMQWtBZ0EwRjhjU0lFUWNBQVNRMEFJQUlnQkVGQWFpSUZTdzBBQTBBZ0FpQUJLQUlBTmdJQUlBSWdBU2dDQkRZQ0JDQUNJQUVvQWdnMkFnZ2dBaUFCS0FJTU5nSU1JQUlnQVNnQ0VEWUNFQ0FDSUFFb0FoUTJBaFFnQWlBQktBSVlOZ0lZSUFJZ0FTZ0NIRFlDSENBQ0lBRW9BaUEyQWlBZ0FpQUJLQUlrTmdJa0lBSWdBU2dDS0RZQ0tDQUNJQUVvQWl3MkFpd2dBaUFCS0FJd05nSXdJQUlnQVNnQ05EWUNOQ0FDSUFFb0FqZzJBamdnQWlBQktBSThOZ0k4SUFGQlFHc2hBU0FDUVVCcklnSWdCVTBOQUFzTElBSWdCRThOQVFOQUlBSWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FrRUVhaUlDSUFSSkRRQUxEQUVMSUFOQkJFa0VRQ0FBSVFJTUFRc2dBQ0FEUVFScklnUkxCRUFnQUNFQ0RBRUxJQUFoQWdOQUlBSWdBUzBBQURvQUFDQUNJQUV0QUFFNkFBRWdBaUFCTFFBQ09nQUNJQUlnQVMwQUF6b0FBeUFCUVFScUlRRWdBa0VFYWlJQ0lBUk5EUUFMQ3lBQ0lBTkpCRUFEUUNBQ0lBRXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2lBaUFEUncwQUN3c2dBQXN3QVFGL0FrQWdBRVVOQUNBQlJRMEFRUWdnQUNBQmJDSUJFQ1VpQUFSQUlBQkJBQ0FCRUJVYUN5QUFJUUlMSUFJTEVRQWdBRVVFUUVFQUR3dEJDQ0FBRUNVTDhnSUNBbjhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUFnQW1vaUEwRUJheUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FEUVFKcklBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRUVJySUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJCR3NnQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVFocklBRTJBZ0FnQWtFTWF5QUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtFUWF5QUJOZ0lBSUFKQkZHc2dBVFlDQUNBQ1FSaHJJQUUyQWdBZ0FrRWNheUFCTmdJQUlBUWdBMEVFY1VFWWNpSUVheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVNCcklnSkJIMHNOQUFzTElBQUxKd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBSkJBRUVBRUdzZ0EwRVFhaVFBQytnRkFRbC9JQUZGQkVCQkFBOExBbjhnQUVVRVFFRUlJQUVRSlF3QkN5QUJSUVJBSUFBUUVFRUFEQUVMQWtBZ0FVRkhTdzBBSUFBQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUIwRUlhaUVCQWtBQ2Z3SkFJQUJCQkdzaUNpSUVLQUlBSWdVZ0JHb2lBaWdDQUNJSklBSWdDV29pQ0VFRWF5Z0NBRWNFUUNBSUlBRWdCR29pQTBFUWFrOEVRQ0FDS0FJRUlnVWdBaWdDQ0NJQ05nSUlJQUlnQlRZQ0JDQURJQWdnQTJzaUFqWUNBQ0FESUFKQmZIRnFRUVJySUFKQkFYSTJBZ0FnQXdKL0lBTW9BZ0JCQ0dzaUFrSC9BRTBFUUNBQ1FRTjJRUUZyREFFTElBSkJIU0FDWnlJRmEzWkJCSE1nQlVFQ2RHdEI3Z0JxSUFKQi94OU5EUUFhUVQ4Z0FrRWVJQVZyZGtFQ2N5QUZRUUYwYTBISEFHb2lBaUFDUVQ5UEd3c2lBa0VFZENJRlFhREhBV28yQWdRZ0F5QUZRYWpIQVdvaUJTZ0NBRFlDQ0NBRklBTTJBZ0FnQXlnQ0NDQUROZ0lFUWFqUEFVR296d0VwQXdCQ0FTQUNyWWFFTndNQUlBUWdBVFlDQUF3RUN5QURJQWhMRFFFZ0FpZ0NCQ0lCSUFJb0FnZ2lBellDQ0NBRElBRTJBZ1FnQkNBRklBbHFJZ0UyQWdBTUF3c2dCU0FCUVJCcVR3UkFJQVFnQVRZQ0FDQUVJQUZCZkhGcVFRUnJJQUUyQWdBZ0FTQUVhaUlESUFVZ0FXc2lBVFlDQUNBRElBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRYURIQVdvMkFnUWdBeUFFUWFqSEFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFhalBBVUdvendFcEF3QkNBU0FCcllhRU53TUFRUUVNQkF0QkFTQUJJQVZORFFFYUMwRUFDd3dCQ3lBRUlBRkJmSEZxUVFScklBRTJBZ0JCQVFzTkFScEJDQ0FIRUNVaUFVVU5BQ0FCSUFBZ0J5QUtLQUlBUVFocklnWWdCaUFIU3hzUUVob2dBQkFRSUFFaEJnc2dCZ3NMTndFQ2Z5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRVFJQUFRYkNFQVFRQWdBU2dDRENBQUd3VkJBQXNoQWlBQlFSQnFKQUFnQWdzWEFDQUFMUUFBUVNCeFJRUkFJQUVnQWlBQUVEMGFDd3U4QkFFRmZ5QUNJQUFvQWpBaUJVMEVRQ0FCSUFBb0FpUWdBaEFTR2lBQUlBQW9BaVFnQW1vMkFpUWdBQ0FBS0FJd0lBSnJOZ0l3SUFBZ0FDa0RPQ0FDclh3M0F6Z2dBZzhMSUFBdEFFUkJCSEVFUUNBQklBQW9BaVFnQlJBU0dpQUFLQUl3SVFFZ0FFRUFOZ0l3SUFBZ0FTQUFLQUlrYWpZQ0pDQUFJQUFwQXpnZ0FhMThOd000SUFWQmZ5QUZHdzhMQWtBZ0JRUkFJQUVnQUNnQ0pDQUZFQkloQkNBQUlBQW9BaUFpQnpZQ0pDQUFLQUl3SVFFZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FCclh3M0F6Z2dBaUFCYXlFQ0lBRWdCR29oQVF3QkN5QUFJQUFvQWlBaUJ6WUNKQXNDUUFKQUEwQUNRQ0FBS0FJQUlRUWdBQ2dDRUNFR0FrQWdBQ2dDUUNJSUlBSkxCRUFnQUNBSElBZ2dCQ0FHRVFBQUlnWTJBakFnQmtGL1JnUkFEQVlMSUFJZ0JrME5BaUFCSUFBb0FpUWdCaEFTR2lBQUlBQW9BaUFpQnpZQ0pDQUFLQUl3SVFRTUFRc2dBQ0FCSUFJZ0JDQUdFUUFBSWdRMkFqQWdCRUYvUmdSQURBVUxJQUlnQkUwTkF5QUFJQUFvQWlBaUJ6WUNKQ0FFSVFZTElBQkJBRFlDTUNBQUlBQXBBemdnQksxOE53TTRJQUVnQkdvaEFTQUNJQVJySVFJZ0JTQUdhaUVGREFFTEN5QUJJQUFvQWlRZ0FoQVNHaUFBSUFBb0FpUWdBbW8yQWlRZ0FDQUFLQUl3SUFKck5nSXdJQUFnQUNrRE9DQUNyWHczQXpnZ0FpQUZhZzhMSUFCQkFEWUNNQ0FBSUFBb0FpQTJBaVFnQUNBQUtRTTRJQVN0ZkRjRE9DQUVJQVZxRHdzZ0EwRUVRWnYxQUVFQUVBOGdBRUVBTmdJd0lBQWdBQ2dDUkVFRWNqWUNSQ0FGUVg4Z0JSc0xpd2NDRFg4QmZpQUFLQUlRSWdkQklFOEVRQ0FBS1FNSXB3OExBa0FnQUNnQ0dDSUNRUVJPQkVBZ0FDZ0NBQ0lCS0FJQUlRUWdBQ0FDUVFScklnVTJBaGdnQUNBQlFRUnFOZ0lBREFFTFFYOUJBQ0FBS0FJY0d5RUVJQUpCQUV3RVFDQUNJUVVNQVFzZ0FrRUJjU0VNSUFBb0FnQWhBUUpBSUFKQkFVWUVRQ0FCSVFZTUFRc2dBa0grLy8vL0IzRWhDZ05BSUFBZ0FVRUJhallDQUNBQkxRQUFJUWtnQUNBQlFRSnFJZ1kyQWdBZ0FDQUNRUUZyTmdJWUlBRXRBQUVoQVNBQUlBSkJBbXNpQWpZQ0dDQUVRZjhCSUFOMFFYOXpjU0FKSUFOMGNrR0EvZ01nQTNSQmYzTnhJQUVnQTBFSWNuUnlJUVFnQTBFUWFpRURJQVloQVNBRlFRSnFJZ1VnQ2tjTkFBc0xRUUFoQlNBTVJRMEFJQUFnQmtFQmFqWUNBQ0FHTFFBQUlRRWdBQ0FDUVFGck5nSVlJQVJCL3dFZ0EzUkJmM054SUFFZ0EzUnlJUVFMSUFBb0FoUWhBU0FBSUFSQkdIWWlDa0gvQVVZMkFoUWdBRUVIUVFnZ0FSc2lBVUVIUVFnZ0JFSC9BWEVpQmtIL0FVWWJhaUlDUVFkQkNDQUVRUWgyUWY4QmNTSURRZjhCUmh0cUlnbEJCMEVJSUFSQkVIWkIvd0Z4SWdSQi93RkdHeUFIYW1vaUNEWUNFQ0FBSUFBcEF3Z2dBeUFCZENBRUlBSjBjaUFLSUFsMGNpQUdjcTBnQjYyR2hDSU9Od01JSUFoQkgwMEVRQUpBSUFWQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQWlBQUlBVkJCR3MyQWhnZ0FDQUJRUVJxTmdJQURBRUxRUUFoQTBGL1FRQWdBQ2dDSEJzaEFpQUZRUUJNRFFBZ0JVRUJjU0VOSUFBb0FnQWhBUUpBSUFWQkFVWUVRQ0FCSVFRTUFRc2dCVUgrLy8vL0IzRWhDVUVBSVFZRFFDQUFJQUZCQVdvMkFnQWdBUzBBQUNFTElBQWdBVUVDYWlJRU5nSUFJQUFnQlVFQmF6WUNHQ0FCTFFBQklRRWdBQ0FGUVFKcklnVTJBaGdnQWtIL0FTQURkRUYvYzNFZ0N5QURkSEpCZ1A0RElBTjBRWDl6Y1NBQklBTkJDSEowY2lFQ0lBTkJFR29oQXlBRUlRRWdCa0VDYWlJR0lBbEhEUUFMQ3lBTlJRMEFJQUFnQkVFQmFqWUNBQ0FFTFFBQUlRRWdBQ0FGUVFGck5nSVlJQUpCL3dFZ0EzUkJmM054SUFFZ0EzUnlJUUlMSUFBZ0FrRVlkaUlCUWY4QlJqWUNGQ0FBUVFkQkNDQUtRZjhCUmhzaUJFRUhRUWdnQWtIL0FYRWlCa0gvQVVZYmFpSUZRUWRCQ0NBQ1FRaDJRZjhCY1NJRFFmOEJSaHRxSWdkQkIwRUlJQUpCRUhaQi93RnhJZ0pCL3dGR0d5QUlhbW8yQWhBZ0FDQURJQVIwSUFJZ0JYUnlJQUVnQjNSeUlBWnlyU0FJcllZZ0RvUWlEamNEQ0FzZ0RxY0xhd0VCZnlNQVFZQUNheUlGSkFBQ1FDQUNJQU5NRFFBZ0JFR0F3QVJ4RFFBZ0JTQUJJQUlnQTJzaUEwR0FBaUFEUVlBQ1NTSUJHeEFWR2lBQlJRUkFBMEFnQUNBRlFZQUNFQmtnQTBHQUFtc2lBMEgvQVVzTkFBc0xJQUFnQlNBREVCa0xJQVZCZ0FKcUpBQUxNUUFnQVFKL0lBSW9Ba3hCQUVnRVFDQUFJQUVnQWhBOURBRUxJQUFnQVNBQ0VEMExJZ0JHQkVBUEN5QUFJQUZ1R2dzWEFDQUFJQUVnQWlBRElBUWdCU0FHSUFkQkFSQW1HZ3VoQVFFRWZ5QUJRUUJNQkVCQkFBOExJQUFvQWd3aEFpQUFLQUlRSVFNRFFDQUJJUVVDUUNBRERRQWdBQ0FDUVFoMFFZRCtBM0VpQWpZQ0RDQUFRUWRCQ0NBQ1FZRCtBMFliSWdNMkFoQWdBQ2dDQ0NJQklBQW9BZ1JQRFFBZ0FDQUJRUUZxTmdJSUlBQWdBaUFCTFFBQWNpSUNOZ0lNQ3lBQUlBTkJBV3NpQXpZQ0VDQUNJQU4yUVFGeElBVkJBV3NpQVhRZ0JISWhCQ0FGUVFGTERRQUxJQVFMSGdBZ0FDZ0NEQVJBSUFCQkFEWUNLQU5BSUFBb0FoaEJBRW9OQUFzTEMyb0JBMzhnQUFSQUlBQW9BaGdpQVFSQUlBQW9BaEFpQWdSL1FRQWhBUU5BSUFBb0FoZ2dBVUUwYkdvb0Fpd2lBd1JBSUFNUUVDQUFLQUlRSVFJTElBRkJBV29pQVNBQ1NRMEFDeUFBS0FJWUJTQUJDeEFRQ3lBQUtBSWNJZ0VFUUNBQkVCQUxJQUFRRUFzTGtoVUJEMzhDUUFKQUlBQW9BZ3hGQkVCQkFTRVBJQUFvQWdSQkFFb05BU0FBS0FJSVFRRktEUUVNQWd0QkFTRU5JQUFvQWdoQkFFb05BQ0FBS0FJRVFRSklEUUVMSUFBb0FnQWlDQ0FOUVFWMGFpRUVBa0FnQUNnQ0VDSUhJQUFvQWhRaUNrOE5BQ0FFSUFkQkJuUnFJUUVDUUNBS0lBZHJRUU54SWdaRkJFQWdCeUVDREFFTElBY2hBZ05BSUFFZ0FmMEFCQUQ5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3UUFJQUVnQWYwQUJCRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRUUlBRkJRR3NoQVNBQ1FRRnFJUUlnQTBFQmFpSURJQVpIRFFBTEN5QUhJQXByUVh4TERRQURRQ0FCSUFIOUFBUUEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRUFDQUJJQUg5QUFRUS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFRUNBQklBSDlBQVJBL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VRQ0FCSUFIOUFBUlEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRVVDQUJJQUg5QUFTQUFmME1XSGFkUDFoMm5UOVlkcDAvV0hhZFAvM21BZjBMQklBQklBRWdBZjBBQkpBQi9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFa0FFZ0FTQUIvUUFFd0FIOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1RBQVNBQklBSDlBQVRRQWYwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCTkFCSUFGQmdBSnFJUUVnQWtFRWFpSUNJQXBIRFFBTEN5QUlJQTlCQlhScUlRVUNRQ0FBS0FJWUlnWWdBQ2dDSENJTFR3MEFJQVVnQmtFR2RHb2hBUUpBSUFzZ0JtdEJBM0VpQ0VVRVFDQUdJUUlNQVF0QkFDRURJQVloQWdOQUlBRWdBZjBBQkFEOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1FBSUFFZ0FmMEFCQkQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UVFJQUZCUUdzaEFTQUNRUUZxSVFJZ0EwRUJhaUlESUFoSERRQUxDeUFHSUF0clFYeExEUUFEUUNBQklBSDlBQVFBL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VBQ0FCSUFIOUFBUVEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUVDQUJJQUg5QUFSQS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFUUNBQklBSDlBQVJRL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VVQ0FCSUFIOUFBU0FBZjBNQUJqUVB3QVkwRDhBR05BL0FCalFQLzNtQWYwTEJJQUJJQUVnQWYwQUJKQUIvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRWtBRWdBU0FCL1FBRXdBSDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dUQUFTQUJJQUg5QUFUUUFmME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQk5BQklBRkJnQUpxSVFFZ0FrRUVhaUlDSUF0SERRQUxDeUFLSUFBb0FnZ2lDU0FBS0FJRUlnNGdEV3NpQUNBQUlBbEtHeUlJSUFnZ0Nrc2JJUXdnQkVFZ2FpRUJBbjhnQjBVRVFDQU1SUVJBUVFBaEF5QUJEQUlMSUFRZ0JQMEFCQUFnQmYwQUJBQWdCUDBBQkNEOTVBSDlERlVUNHo1VkUrTStWUlBqUGxVVDR6Nzk1Z0g5NVFIOUN3UUFJQVFnQlAwQUJCQWdCZjBBQkJBZ0JQMEFCREQ5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRUVFRRWhBeUFFUWVBQWFnd0JDeUFCSUFjaUEwRUdkR29MSVFJZ0F5QU1TUVJBQTBBZ0FrRWdheUlBSUFEOUFBUUFJQUpCUUdyOUFBUUFJQUw5QUFRQS9lUUIvUXhWRStNK1ZSUGpQbFVUNHo1VkUrTSsvZVlCL2VVQi9Rc0VBQ0FDUVJCcklnQWdBUDBBQkFBZ0FrRXdhLzBBQkFBZ0F2MEFCQkQ5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRQUlBSkJRR3NoQWlBRFFRRnFJZ01nREVjTkFBc0xJQWdnQ2s4aURVVUVRQ0FDUVNCcklnQWdBUDBBQkFBZ0FrRkFhdjBBQkFEOURGVVRZejlWRTJNL1ZSTmpQMVVUWXovOTVnSDk1UUg5Q3dRQUlBSkJFR3NpQUNBQS9RQUVBQ0FDUVRCci9RQUVBUDBNVlJOalAxVVRZejlWRTJNL1ZSTmpQLzNtQWYzbEFmMExCQUFMSUFzZ0RpQUpJQTlySWdBZ0FDQU9TaHNpRGlBTElBNUpHeUVKSUFWQklHb2hBaUFKQW44Z0JrVUVRQ0FKUlFSQUlBSWhBMEVBREFJTElBVWdCZjBBQkFBZ0JQMEFCQUFnQmYwQUJDRDk1QUg5REhZR1lqOTJCbUkvZGdaaVAzWUdZai85NWdIOTVRSDlDd1FBSUFVZ0JmMEFCQkFnQlAwQUJCQWdCZjBBQkREOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UVFJQVZCNEFCcUlRTkJBUXdCQ3lBQ0lBWkJCblJxSVFNZ0Jnc2lBRXNFUUFOQUlBTkJJR3NpQ0NBSS9RQUVBQ0FEUVVCcS9RQUVBQ0FEL1FBRUFQM2tBZjBNZGdaaVAzWUdZajkyQm1JL2RnWmlQLzNtQWYzbEFmMExCQUFnQTBFUWF5SUlJQWo5QUFRQUlBTkJNR3Y5QUFRQUlBUDlBQVFRL2VRQi9ReDJCbUkvZGdaaVAzWUdZajkyQm1JLy9lWUIvZVVCL1FzRUFDQURRVUJySVFNZ0FFRUJhaUlBSUFsSERRQUxDeUFMSUE1TklnaEZCRUFnQTBFZ2F5SUFJQUQ5QUFRQUlBTkJRR3I5QUFRQS9ReDJCdUkvZGdiaVAzWUc0ajkyQnVJLy9lWUIvZVVCL1FzRUFDQURRUkJySWdBZ0FQMEFCQUFnQTBFd2EvMEFCQUQ5REhZRzRqOTJCdUkvZGdiaVAzWUc0ai85NWdIOTVRSDlDd1FBQ3dKQUlBZEZCRUFnREVVRVFFRUFJUWNNQWdzZ0JDQUUvUUFFQUNBRi9RQUVBQ0FFL1FBRUlQM2tBZjBNcmdGWlBhNEJXVDJ1QVZrOXJnRlpQZjNtQWYza0FmMExCQUFnQkNBRS9RQUVFQ0FGL1FBRUVDQUUvUUFFTVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJCQWdCRUhnQUdvaEFVRUJJUWNNQVFzZ0FTQUhRUVowYWlFQkN5QUhJQXhKQkVBRFFDQUJRU0JySWdBZ0FQMEFCQUFnQVVGQWF2MEFCQUFnQWYwQUJBRDk1QUg5REs0QldUMnVBVms5cmdGWlBhNEJXVDM5NWdIOTVBSDlDd1FBSUFGQkVHc2lBQ0FBL1FBRUFDQUJRVEJyL1FBRUFDQUIvUUFFRVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJBQWdBVUZBYXlFQklBZEJBV29pQnlBTVJ3MEFDd3NnRFVVRVFDQUJRU0JySWdBZ0FQMEFCQUFnQVVGQWF2MEFCQUQ5REs0QjJUMnVBZGs5cmdIWlBhNEIyVDM5NWdIOTVBSDlDd1FBSUFGQkVHc2lBQ0FBL1FBRUFDQUJRVEJyL1FBRUFQME1yZ0haUGE0QjJUMnVBZGs5cmdIWlBmM21BZjNrQWYwTEJBQUxBa0FnQmtVRVFDQUpSUVJBUVFBaEJnd0NDeUFGSUFYOUFBUUFJQVQ5QUFRQUlBWDlBQVFnL2VRQi9ReHpCc3MvY3diTFAzTUd5ejl6QnNzLy9lWUIvZVFCL1FzRUFDQUZJQVg5QUFRUUlBVDlBQVFRSUFYOUFBUXcvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFRUNBRlFlQUFhaUVDUVFFaEJnd0JDeUFDSUFaQkJuUnFJUUlMSUFZZ0NVa0VRQU5BSUFKQklHc2lBQ0FBL1FBRUFDQUNRVUJxL1FBRUFDQUMvUUFFQVAza0FmME1jd2JMUDNNR3l6OXpCc3MvY3diTFAvM21BZjNrQWYwTEJBQWdBa0VRYXlJQUlBRDlBQVFBSUFKQk1HdjlBQVFBSUFMOUFBUVEvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFQUNBQ1FVQnJJUUlnQmtFQmFpSUdJQWxIRFFBTEN5QUlEUUFnQWtFZ2F5SUFJQUQ5QUFRQUlBSkJRR3I5QUFRQS9ReHpCa3RBY3daTFFITUdTMEJ6Qmt0QS9lWUIvZVFCL1FzRUFDQUNRUkJySWdBZ0FQMEFCQUFnQWtFd2EvMEFCQUQ5REhNR1MwQnpCa3RBY3daTFFITUdTMEQ5NWdIOTVBSDlDd1FBQ3d0ZEFRUi9JQUFFUUNBQUtBSVVJZ0VnQUNnQ0VDSUNiQVJBQTBBZ0FDZ0NHQ0FEUVFKMGFpZ0NBQ0lFQkVBZ0JCQVFJQUFvQWhBaEFpQUFLQUlVSVFFTElBTkJBV29pQXlBQklBSnNTUTBBQ3dzZ0FDZ0NHQkFRSUFBUUVBc0xoUUVCQW44Q1FBSkFJQUFvQWdRaUF5QUFLQUlBSWdSSEJFQWdBQ2dDQ0NFRERBRUxJQUFnQTBFS2FpSUVOZ0lFSUFBb0FnZ2dCRUVDZEJBWElnTkZEUUVnQUNBRE5nSUlJQUFvQWdBaEJBc2dBeUFFUVFKMGFpQUJOZ0lBSUFBZ0JFRUJhallDQUVFQkR3c2dBQ2dDQ0JBUUlBQkNBRGNDQUNBQ1FRRkIwaTVCQUJBUFFRQUxrd1FDQm44Q2ZnSkFBa0FEUUNBQUlBQkJBV3R4RFFFZ0FVRkhTdzBCSUFCQkNDQUFRUWhMSWdjYklRQkJxTThCS1FNQUlnZ0NmMEVJSUFGQkEycEJmSEVnQVVFSVRSc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZuSVFNZ0FVRWRJQU5yZGtFRWN5QURRUUowYTBIdUFHb2dBVUgvSDAwTkFCcEJQeUFCUVI0Z0EydDJRUUp6SUFOQkFYUnJRY2NBYWlJRElBTkJQMDhiQ3lJRHJZZ2lDVUlBVWdSQUEwQWdDU0FKZWlJSWlDRUpBbjRnQXlBSXAyb2lBMEVFZENJRVFhakhBV29vQWdBaUFpQUVRYURIQVdvaUJVY0VRQ0FDSUFBZ0FSQThJZ1FOQmlBQ0tBSUVJZ1FnQWlnQ0NDSUdOZ0lJSUFZZ0JEWUNCQ0FDSUFVMkFnZ2dBaUFGS0FJRU5nSUVJQVVnQWpZQ0JDQUNLQUlFSUFJMkFnZ2dBMEVCYWlFRElBbENBWWdNQVF0QnFNOEJRYWpQQVNrREFFSitJQU90aVlNM0F3QWdDVUlCaFFzaUNVSUFVZzBBQzBHb3p3RXBBd0FoQ0F0QlB5QUllYWRySVFVQ1FDQUlVQVJBUVFBaEFnd0JDeUFGUVFSMElnUkJxTWNCYWlnQ0FDRUNJQWhDZ0lDQWdBUlVEUUJCNHdBaEF5QUNJQVJCb01jQmFpSUdSZzBBQTBBZ0EwVU5BU0FDSUFBZ0FSQThJZ1FOQkNBRFFRRnJJUU1nQWlnQ0NDSUNJQVpIRFFBTEN5QUJJQUJCTUdwQk1DQUhHMm9RYlEwQUN5QUNSUTBBSUFJZ0JVRUVkRUdneHdGcUlnTkdEUUFEUUNBQ0lBQWdBUkE4SWdRTkFpQUNLQUlJSWdJZ0EwY05BQXNMUVFBaEJBc2dCQXZhSXdJcmZ3TjdBa0FnQUNnQ0FDSUpJQU5KRFFBZ0FTQURUdzBBSUFFZ0NVOE5BQ0FBS0FJRUlna2dCRWtOQUNBQ0lBUlBEUUFnQWlBSlR3MEFJQVZCSEdzaEp5QUFLQUlJSWhsQkFuUWhFU0FIUVFKMElROGdCa0VDZENFZklBVkJCR3NoS0NBQ0lBQW9BZ3h1SVI0Z0dTQVpJQUVnR1c0aUtXd2dBV3RxSVNvZ0JrRUlSeUVqSUFJaEhRTkFJQUFvQWd3aUNTRUtJQUlnSFVZRVFDQUpJQUlnQ1hCcklRb0xJQW9nQkNBZGF5SU1JQW9nREVrYkloTkJmSEVoR3lBVFFRTnhJUllnRTBGNGNTRXJJQk5CQjNFaEpDQVRRUUZySVJvZ0dTQUpRUUowSUFwQkFuUnJRUVJxYkNFZ0lBWkJBa1lnRTBFQlJuRWhMQ0FKSUFwcklCbHNJU1VnSnlBUElCMGdBbXNpREd3aUNXb2hKaUFKSUNocUlTMGdCU0FKYWlFdUlBVWdCeUFNYkVFQ2RHb2hIQ0FwSVNFZ0FTRVlBMEFnS2lBWklBRWdHRVliSWd3Z0F5QVlheUlKSUFrZ0RFc2JJUkFnR1NBTWF5RUpJQ0ZCQW5RaURTQUFLQUlZSUFBb0FoQWdIbXhCQW5ScWFpZ0NBQ0VTQWtBQ1FDQUlCRUFDUUFKQUFrQUNRQUpBSUJJRVFDQVNJQ1ZCQW5ScUlBbEJBblJxSVFvZ0dDQUJheUVOSUFaQkFVWU5CQ0FjSUFZZ0RXeEJBblJxSVFzZ0VFRUJSZzBESUN3TkFpQWpEUUVnRUVFSFRRMEJJQk5GRFFnZ0ppQU5JQjlzYWlBUVFRVjBhaUVWSUJJZ0lDQVFRUUowYWlBTVFRSjBhMm9oSWlBUVFYeHhJUTFCQUNFU0RBVUxJQVpCQVVjRVFDQVRSUTBJSUJCQmZIRWhEU0FRUVFOeElRd2dIQ0FZSUFGcklBWnNRUUowYWlFTFFRQWhFaUFRUVFGclFRTkpJUlFEUUFKQUlCQkZEUUJCQUNFSlFRQWhDa0VBSVE0Z0ZFVUVRQU5BSUFzZ0JpQUtiRUVDZEdwQkFEWUNBQ0FMSUFwQkFYSWdCbXhCQW5ScVFRQTJBZ0FnQ3lBS1FRSnlJQVpzUVFKMGFrRUFOZ0lBSUFzZ0NrRURjaUFHYkVFQ2RHcEJBRFlDQUNBS1FRUnFJUW9nRGtFRWFpSU9JQTFIRFFBTEN5QU1SUTBBQTBBZ0N5QUdJQXBzUVFKMGFrRUFOZ0lBSUFwQkFXb2hDaUFKUVFGcUlna2dERWNOQUFzTElBc2dEMm9oQ3lBVElCSkJBV29pRWtjTkFBc01DQXNnRTBVTkJ5QVFRUUowSVF3Z0hDQVlJQUZyUVFKMGFpRUxRUUFoQ1NBYVFRZFBCRUFEUUNBTFFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cVFRQWdEQkFWSUE5cUlRc2dDVUVJYWlJSklDdEhEUUFMQzBFQUlRa2dKRVVOQndOQUlBdEJBQ0FNRUJVZ0Qyb2hDeUFKUVFGcUlna2dKRWNOQUFzTUJ3c2dFMFVOQmlBUVFYeHhJUlFnRUVFRGNTRVNRUUFoRFNBUVFRRnJRUU5KSVJjTUJRdEJBQ0VKSUJCQmZIRWlEZ1JBQTBBZ0N5QUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQWxCQkdvaUNTQU9TUTBBQ3dzZ0NTQVFUdzBGQWtBZ0VDQUpheUlVUVJCSkRRQWdMaUFOSUI5c0lnMXFJQWxCQTNScUlCSWdJR29pRGlBUUlBeHJRUUowYWtrRVFDQU9JQWtnREd0QkFuUnFJQTBnTFdvZ0VFRURkR3BKRFFFTElBb2dDVUVDZEdvaERTQUovUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaE5DQUpJQlJCZkhFaURHb2hDVUVBSVE0RFFDQUxJRFJCQWYyckFTSTEvUnNBUVFKMGFpQU5JQTVCQW5ScS9RQUNBQ0kyL1ZvQ0FBQWdDeUExL1JzQlFRSjBhaUEyL1ZvQ0FBRWdDeUExL1JzQ1FRSjBhaUEyL1ZvQ0FBSWdDeUExL1JzRFFRSjBhaUEyL1ZvQ0FBTWdOUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFMElBNUJCR29pRGlBTVJ3MEFDeUFNSUJSR0RRWUxRUUFoRENBSklRNGdFQ0FKYTBFRGNTSU5CRUFEUUNBTElBNUJBM1JxSUFvZ0RrRUNkR29vQWdBMkFnQWdEa0VCYWlFT0lBeEJBV29pRENBTlJ3MEFDd3NnQ1NBUWEwRjhTdzBGQTBBZ0N5QU9RUU4wYWlBS0lBNUJBblJxS0FJQU5nSUFJQXNnRGtFQmFpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnRGtFQ2FpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnRGtFRGFpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQTVCQkdvaURpQVFSdzBBQ3d3RkN5QVRSUTBFUVFBaENTQWFRUU5QQkVBRFFDQUxJQW9vQWdBMkFnQWdDeUFQYWlJTUlBb2dFV29pRFNnQ0FEWUNBQ0FNSUE5cUlnd2dEU0FSYWlJTktBSUFOZ0lBSUF3Z0Qyb2lEQ0FOSUJGcUlnMG9BZ0EyQWdBZ0RTQVJhaUVLSUF3Z0Qyb2hDeUFKUVFScUlna2dHMGNOQUFzTFFRQWhDU0FXUlEwRUEwQWdDeUFLS0FJQU5nSUFJQW9nRVdvaENpQUxJQTlxSVFzZ0NVRUJhaUlKSUJaSERRQUxEQVFMSUJ3Z0RVRUNkR29oQ3lBUVFRUkhCRUFnRTBVTkJDQVFRUUowSVFsQkFDRU9JQnBCQTA4RVFBTkFJQXNnQ2lBSkVCSWhNQ0FLSUJGcUlnMGdFV29pQ3lBUmFpSVNJQkZxSVFvZ01DQVBhaUFOSUFrUUVpQVBhaUFMSUFrUUVpQVBhaUFTSUFrUUVpQVBhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRUURRQ0FMSUFvZ0NSQVNJVEVnQ2lBUmFpRUtJREVnRDJvaEN5QU9RUUZxSWc0Z0ZrY05BQXNNQkFzZ0UwVU5BMEVBSVFrZ0drRURUd1JBQTBBZ0N5QUsvUUFDQVAwTEFnQWdDeUFQYWlJTUlBb2dFV29pRGYwQUFnRDlDd0lBSUF3Z0Qyb2lEQ0FOSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRFNBUmFpRUtJQXdnRDJvaEN5QUpRUVJxSWdrZ0cwY05BQXNMUVFBaENTQVdSUTBEQTBBZ0N5QUsvUUFDQVAwTEFnQWdDaUFSYWlFS0lBc2dEMm9oQ3lBSlFRRnFJZ2tnRmtjTkFBc01Bd3NEUUVFQUlRa2dEUVJBQTBBZ0N5QUpRUVYwYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQWxCQkdvaUNTQU5TUTBBQ3dzQ1FDQUpJQkJQRFFBQ1FDQVFJQWxySWhSQkNFOEVRQUpBSUFzZ0NVRUZkR29nSWlBUklCSnNhazhOQUNBS0lBbEJBblJxSUJVZ0R5QVNiR3BQRFFBZ0NTRU1EQUlMSUFuOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0UwSUFrZ0ZFRjhjU0lYYWlFTVFRQWhEZ05BSUFzZ05FRUQvYXNCSWpYOUd3QkJBblJxSUFvZ0NTQU9ha0VDZEdyOUFBSUFJamI5V2dJQUFDQUxJRFg5R3dGQkFuUnFJRGI5V2dJQUFTQUxJRFg5R3dKQkFuUnFJRGI5V2dJQUFpQUxJRFg5R3dOQkFuUnFJRGI5V2dJQUF5QTAvUXdFQUFBQUJBQUFBQVFBQUFBRUFBQUEvYTRCSVRRZ0RrRUVhaUlPSUJkSERRQUxJQlFnRjBZTkFnd0JDeUFKSVF3TFFRQWhEaUFRSUF3aUNXdEJBM0VpRkFSQUEwQWdDeUFKUVFWMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFsQkFXb2hDU0FPUVFGcUlnNGdGRWNOQUFzTElBd2dFR3RCZkVzTkFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBV29pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbW9pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBMm9pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRUVjTkFBc0xJQW9nRVdvaENpQUxJQTlxSVFzZ0V5QVNRUUZxSWhKSERRQUxEQUlMSUJKRkJFQkJBU0FBS0FJSUlBQW9BZ3hzUVFKMEVCTWlFa1VFUUVFQUR3c2dBQ2dDR0NBQUtBSVFJQjVzUVFKMGFpQU5haUFTTmdJQUN5QVNJQ1ZCQW5ScUlBbEJBblJxSVFzZ0dDQUJheUVKQWtBQ1FBSkFBa0FnQmtFQlJ3UkFJQndnQmlBSmJFRUNkR29oQ2lBUVFRRkdEUUVnSXcwQ0lCQkJCMDBOQWlBVFJRMEdJQ1lnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM4Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBSUJBZ0NXc2lGMEVJVHdSQUFrQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVR3MEFJQW9nQ1VFRmRHb2dFaUF2SUF3Z0VXeHFhazhOQUNBSklRME1BZ3NnQ2YwUi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQS9hNEJJVFFnQ1NBWFFYeHhJaFZxSVExQkFDRU9BMEFnQ3lBSklBNXFRUUowYWlBS0lEUkJBLzJyQVNJMS9Sc0RRUUowYWlBS0lEWDlHd0pCQW5ScUlBb2dOZjBiQVVFQ2RHb2dDaUExL1JzQVFRSjBhdjBKQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlEVDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTkNBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUmcwQ0RBRUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CZ3NnSENBSlFRSjBhaUVLSUJCQkJFWU5BaUFUUlEwRklCQkJBblFoQ1VFQUlRNGdHa0VEVHdSQUEwQWdDeUFLSUFrUUVpRXlJQW9nRDJvaURTQVBhaUlMSUE5cUloSWdEMm9oQ2lBeUlCRnFJQTBnQ1JBU0lCRnFJQXNnQ1JBU0lCRnFJQklnQ1JBU0lCRnFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJRTkFJQXNnQ2lBSkVCSWhNeUFLSUE5cUlRb2dNeUFSYWlFTElBNUJBV29pRGlBV1J3MEFDd3dGQ3lBVFJRMEVRUUFoQ1NBYVFRTlBCRUFEUUNBTElBb29BZ0EyQWdBZ0N5QVJhaUlNSUFvZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaURDQU5JQTlxSWcwb0FnQTJBZ0FnRENBUmFpRUxJQTBnRDJvaENpQUpRUVJxSWdrZ0cwY05BQXNMUVFBaENTQVdSUTBFQTBBZ0N5QUtLQUlBTmdJQUlBc2dFV29oQ3lBS0lBOXFJUW9nQ1VFQmFpSUpJQlpIRFFBTERBUUxJQk5GRFFNZ0VFRjhjU0VVSUJCQkEzRWhFa0VBSVEwZ0VFRUJhMEVEU1NFWERBRUxJQk5GRFFKQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMzlBQUlBL1FzQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOL1FBQ0FQMExBZ0FnRENBUmFpSU1JQTBnRDJvaURmMEFBZ0Q5Q3dJQUlBMGdEMm9oQ2lBTUlCRnFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkFnTkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0Qyb2hDaUFMSUJGcUlRc2dDVUVCYWlJSklCWkhEUUFMREFJTEEwQUNRQ0FRUlEwQVFRQWhEa0VBSVFsQkFDRU1JQmRGQkVBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0N5QUpRUUZ5SWhWQkFuUnFJQW9nQmlBVmJFRUNkR29vQWdBMkFnQWdDeUFKUVFKeUloVkJBblJxSUFvZ0JpQVZiRUVDZEdvb0FnQTJBZ0FnQ3lBSlFRTnlJaFZCQW5ScUlBb2dCaUFWYkVFQ2RHb29BZ0EyQWdBZ0NVRUVhaUVKSUF4QkJHb2lEQ0FVUncwQUN3c2dFa1VOQUFOQUlBc2dDVUVDZEdvZ0NpQUdJQWxzUVFKMGFpZ0NBRFlDQUNBSlFRRnFJUWtnRGtFQmFpSU9JQkpIRFFBTEN5QUxJQkZxSVFzZ0NpQVBhaUVLSUJNZ0RVRUJhaUlOUncwQUN3d0JDd05BQWtBZ0VFVU5BRUVBSVE1QkFDRUpRUUFoRENBWFJRUkFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSVZJQVpzUVFKMGFpQUtJQlZCQW5ScUtBSUFOZ0lBSUFzZ0NVRUNjaUlWSUFac1FRSjBhaUFLSUJWQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVklBWnNRUUowYWlBS0lCVkJBblJxS0FJQU5nSUFJQWxCQkdvaENTQU1RUVJxSWd3Z0ZFY05BQXNMSUJKRkRRQURRQ0FMSUFZZ0NXeEJBblJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDVUVCYWlFSklBNUJBV29pRGlBU1J3MEFDd3NnQ2lBUmFpRUtJQXNnRDJvaEN5QU5RUUZxSWcwZ0UwY05BQXNMSUNGQkFXb2hJU0FRSUJocUloZ2dBMGtOQUFzZ0hrRUJhaUVlSUJNZ0hXb2lIU0FFU1EwQUN3dEJBUXZETXdVbWZ3OStBWHNCZlFGOEl3QkIwQUJySWc0a0FDQU9RWkQvQXpZQ0tDQUFLQUpzSUFBb0FtaHNJUmNDZndKQUFrQUNRQ0FBS0FJSUlndEJDRWNFUUVFQUlBdEJnQUpIRFFRYUlBNUIyZjhETmdJb0RBRUxJQUF0QUVSQkFYRU5BQ0FYUVFGeElTSWdGMEY4Y1NFUElCZEJBV3V0UW93c2ZpSXhRaUNJcDBFQVJ5RWpJREduSVNRZ0RrSE5BR29oSlNBT1Fjd0FhaUVvSUE1QnlBQnFJU2tnRjBFa1NTRXFRWkQvQXlFTEFrQUNRQUpBQTBBQ1FDQUxRWlAvQTBZTkFBSkFBMEFnQ1NrRENDSXhVQVIrUWdBRklERWdDU2tET0gwTFVBUkFJQUJCd0FBMkFnZ01Bd3NnQ1NBQUtBSVFRUUlnQ2hBYVFRSkhCRUFnQ2tFQlFaWVNRUUFRRDBFQURBc0xJQUFvQWhBZ0RrRWtha0VDRUJFZ0RpZ0NKQ0lMUVFGTkJFQWdDa0VCUVljdVFRQVFEMEVBREFzTEFrQWdEaWdDS0VHQWdRSkdCRUFnQ1NrRENDSXhVQVIrUWdBRklERWdDU2tET0gwTFVBMEJJQTRvQWlRaEN3c2dBQ2dDQ0NJVVFSQnhCRUFnQUNBQUtBSVlJQXRyUVFKck5nSVlDeUFPSUF0QkFtc2lFallDSkVIZ3ZRRWhEQ0FPS0FJb0lRMERRQ0FNSWdzb0FnQWlHQVJBSUF0QkRHb2hEQ0FOSUJoSERRRUxDeUFMS0FJRUlCUnhSUVJBSUFwQkFVSDhLRUVBRUE5QkFBd01Dd0pBSUFBb0FoUWdFazhFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l4VUFSK1FnQUZJREVnQ1NrRE9IMExJQkt0VXdSQUlBcEJBVUdNTEVFQUVBOUJBQXdOQ3lBQUtBSVFJQTRvQWlRUUZ5SU1SUVJBSUFBb0FoQVFFQ0FBUWdBM0F4QWdDa0VCUWRRbFFRQVFEMEVBREEwTElBQWdERFlDRUNBQUlBNG9BaVFpRWpZQ0ZBc2dDU0FNSUJJZ0NoQWFJZ3dnRGlnQ0pFY0VRQ0FLUVFGQmxoSkJBQkFQUVFBTURBc2dDeWdDQ0NJTFJRUkFJQXBCQVVIYTFnQkJBQkFQUVFBTURBc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQTRnRGlnQ0tEWUNJQ0FLUVFGQmxPZ0FJQTVCSUdvUUQwRUFEQXdMSUFrcEF6Z2hNU0FPS0FJa0lSRWdBQ2dDeUFFaUZDZ0NLQ0lTSUFBb0Fzd0JJZ3hCS0d3aURXb2lGaWdDRkNJY1FRRnFJaDBnRmlnQ0hDSUxTd1JBSUJZQ2Z5QUxzME1BQU1oQ2tpSkJRd0FBZ0U5ZElFRkRBQUFBQUdCeEJFQWdRYWtNQVF0QkFBc2lDellDSENBV0tBSVlJQXRCR0d3UUZ5RUxJQlFvQWlnaUVpQU5haUVXSUF0RkRRTWdGaUFMTmdJWUlCWW9BaFFpSEVFQmFpRWRDeUFOSUJKcUlnMG9BaGdnSEVFWWJHb2lDeUFSUVFScU5nSVFJQXNnTWFjZ0VXdEJCR3NpREt3M0F3Z2dDeUFZT3dFQUlBMGdIVFlDRkFKQUlCaEJrUDhEUncwQUlBMG9BaEFpQ3dSQUlBc2dEU2dDREVFWWJHb2dESzAzQXdBTElBa3BBemluSUE0b0FpUnJRUVJyclNJeElBQXBBekJYRFFBZ0FDQXhOd013Q3lBQUxRQkVRUVJ4QkVBZ0NTQUFOUUlZSUFvZ0NTZ0NLQkVJQUNBQU5RSVlVZ1JBSUFwQkFVR1dFa0VBRUE5QkFBd05DeUFPUVpQL0F6WUNLQXdFQ3lBSklBQW9BaEJCQWlBS0VCcEJBa2NFUUNBS1FRRkJsaEpCQUJBUFFRQU1EQXNnQUNnQ0VDQU9RU2hxUVFJUUVTQU9LQUlvUVpQL0EwY05BUXdEQ3dzZ0FFSEFBRFlDQ0F3QkN5QVdLQUlZRUJBZ0ZDZ0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVR0ZIVUVBRUE5QkFBd0lDd0pBSUFrcEF3Z2lNVkFFZmtJQUJTQXhJQWtwQXpoOUMxQUVRQ0FBS0FJSVFjQUFSZzBCQ3dKQUFrQWdBQzBBUkNJTFFRUnhSUVJBSUFBb0Fzd0JRWXdzYkNFTUlBQW9BcHdCSVM0Q1FBSkFJQUFvQWpnRVFDQUpLUU1JSWpGUUJINUNBQVVnTVNBSktRTTRmUXVuSVJNTUFRc2dBQ2dDR0NJVFFRSkpEUUVMSUFBZ0UwRUNheUlUTmdJWUN5QXVJQXhxSVJnZ0UwVU5BU0FKS1FNSUlqRlFCSDVDQUFVZ01TQUpLUU00ZlFzZ0U2MVRCRUFnQUNnQ3VBRUVRQ0FLUVFGQnVTeEJBQkFQUVFBTURRc2dDa0VDUWJrc1FRQVFEd3NnQUNnQ0dDSU5RWDVQQkVBZ0NrRUJRZjRLUVFBUUQwRUFEQXdMQWtBZ0dDZ0MzQ3NpREFSQUlCZ29BdUFySWd0QmZTQU5hMHNFUUNBS1FRRkJsZ2xCQUJBUFFRQU1EZ3NnRENBTElBMXFRUUpxRUJjaUN3UkFJQmdnQ3pZQzNDc01CQXNnR0NnQzNDc1FFQ0FZUVFBMkF0d3JEQUVMSUJnZ0RVRUNhaEFVSWdzMkF0d3JJQXNOQWdzZ0NrRUJRWWN2UVFBUUQwRUFEQXNMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JFREFFTElBQW9Bc2dCSWhZRVFDQVdLQUlvSWhJZ0FDZ0N6QUVpRkVFb2JDSVJhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJeVFnSjlJakUzQXdnZ0N5QXlJQUExQWhoOE53TVFJQUFvQWhnaERRSkFJQXdvQWhRaUhFRUJhaUlkSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0ZEQUFDQVQxMGdRVU1BQUFBQVlIRUVRQ0JCcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQVhJUXdnRmlnQ0tDSVNJQkZxSVFzZ0RFVU5CaUFMSUF3MkFoZ2dDeWdDRkNJY1FRRnFJUjBMSUF3Z0hFRVliR29pQ3lBTlFRSnFOZ0lRSUFzZ01jUTNBd2dnQzBHVC93TTdBUUFnRVNBU2FpQWROZ0lVQ3lBQUtBSVlJUXdDUUNBVFJRUkFRUUFoRXd3QkN5QUpJQmdvQXR3cklCZ29BdUFyYWlBTUlBb1FHaUVUSUFBb0FoZ2hEQXNnQUVFSVFjQUFJQXdnRTBZYk5nSUlJQmdnR0NnQzRDc2dFMm8yQXVBcklBQXRBRVFpQzBFSmNVRUJSdzBBSUFBZ0MwRUljam9BUkNBQUtBTE1BU0VOSUFrb0FoeEJBa1lOQUNBSktRTTRJakZDZjFFTkFBSkFBMEJCQUNFTUlBa2dEa0hHQUdvaUMwRUNJQW9RR2tFQ1J3MEJJQXNnRGtGQWEwRUNFQkVnRGlnQ1FFR1Evd05IRFFGQmxoSWhFaUFKSUF0QkFpQUtFQnBCQWtjTkNTQUxJQTVCUEdwQkFoQVJJQTRvQWp4QkNrY0VRRUdITGlFU0RBb0xJQTVCQ0RZQ1BDQUpJQTVCeGdCcVFRZ2dDaEFhSWdzZ0RpZ0NQRWNOQ1NBTFFRaEhCRUJCdlI0aEVnd0tDeUFPUWNZQWFpQU9RVGhxUVFJUUVTQXBJQTVCTkdwQkJCQVJJQ2dnRGtFd2FrRUJFQkVnSlNBT1FTeHFRUUVRRVNBTklBNG9BamhIQkVBZ0RpZ0NOQ0lMUVE1SkRRSWdEaUFMUVF4cklnczJBalFnQ1NBTHJTQUtJQWtvQWlnUkNBQWdEalVDTkZFTkFRd0NDd3NnRGlnQ01DQU9LQUlzUmlFTUN5QUpJREVnQ2lBSktBSXNFUTBBUlEwSUlBeEZEUUFnQUNBQUxRQkVRZTRCY1VFUWNqb0FSQUpBSUJkRkRRQWdBQ2dDbkFFaEUwRUFJUXNDUUNBcURRQWdFMEhZSzJvaURDQWthaUFNU1NBamNnMEFBMEFnRXlBTFFZd3NiR29pSENnQzJDc2lIZjBSSUJNZ0MwRUJja0dNTEd4cUloZ29BdGdySWhiOUhBRWdFeUFMUVFKeVFZd3NiR29pRVNnQzJDc2lGUDBjQWlBVElBdEJBM0pCakN4c2FpSU5LQUxZS3lJTS9Sd0QvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVGdpUVAwYkFFRUJjUVJBSUJ4QjJDdHFJQjFCQVdvMkFnQUxJRUQ5R3dGQkFYRUVRQ0FZUWRncmFpQVdRUUZxTmdJQUN5QkEvUnNDUVFGeEJFQWdFVUhZSzJvZ0ZFRUJhallDQUFzZ1FQMGJBMEVCY1FSQUlBMUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkJHb2lDeUFQUncwQUN5QVhJQThpQzBZTkFRc2dDMEVCY2lFTUlDSUVRQ0FUSUF0QmpDeHNhaUlOS0FMWUt5SUxCRUFnRFVIWUsyb2dDMEVCYWpZQ0FBc2dEQ0VMQ3lBTUlCZEdEUUFEUUNBVElBdEJqQ3hzYWlJTktBTFlLeUlNQkVBZ0RVSFlLMm9nREVFQmFqWUNBQXNnRFVIazF3QnFJZzBvQWdBaURBUkFJQTBnREVFQmFqWUNBQXNnQzBFQ2FpSUxJQmRIRFFBTEN5QUtRUUpCbE1RQVFRQVFEd3NnQUMwQVJFRUJjUTBBSUFrZ0FDZ0NFRUVDSUFvUUdrRUNSd1JBQWtBZ0FDZ0N6QUZCQVdvZ0YwY05BQ0FYUlEwQUlBQW9BcHdCSVF4QkFDRUxBMEFnRENBTFFZd3NiR29pQ1NnQzFDdEZCRUFnQ1NnQzJDdEZEUWdMSUF0QkFXb2lDeUFYUncwQUN3c2dDa0VCUVpZU1FRQVFEMEVBREFrTElBQW9BaEFnRGtFb2FrRUNFQkVnRGlnQ0tDRUxJQUF0QUVSQkFYRU5BaUFMUWRuL0EwY05BUXdDQ3dzZ0RpZ0NLQ0VMQ3lBTFFkbi9BMGNOQWlBQUtBSUlRWUFDUmcwQ0lBQkJnQUkyQWdnZ0FFRUFOZ0xNQVF3Q0N5QUxLQUlZRUJBZ0ZpZ0NLQ0FVUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVR0ZIVUVBRUE5QkFBd0VDeUFPSUFzMkFoQWdDa0VFUWVmUkFDQU9RUkJxRUE4Z0FDQUxOZ0xNQVNBT1Fkbi9BellDS0NBQVFZQUNOZ0lJQ3lBQUtBTE1BU0VMSUFBb0Fwd0JJUWtDUUFKQUlBQXRBRVJCQVhFTkFBSkFBa0FnQ3lBWFR3MEFJQWtnQzBHTUxHeHFJUk1EUUNBVEtBTGNLdzBCSUFBZ0MwRUJhaUlMTmdMTUFTQVRRWXdzYWlFVElBc2dGMGNOQUFzTUFRc2dDeUFYUncwQkN5QUlRUUEyQWdBTUFRc0NRQUpBSUFwQkFTQUpJQXRCakN4c2FpSVJLQUswS0FSL1FadzBCU0FSTFFDSUxFRUNjVVVOQWdKQUlCRW9BcWdvSWc5RkJFQkJBQ0VNREFFTElCRW9BcXdvSVFsQkFDRU1RUUFoQ3lBUFFRUlBCRUFnRDBGOGNTRUwvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVUJCQUNFU0EwQWdDU0FTUVFOMGFpSU1RUnhxSUF4QkZHb2dERUVNYWlBTS9Ra0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkEvYTRCSVVBZ0VrRUVhaUlTSUF0SERRQUxJRUFnUUNCQS9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa0FnUUNCQS9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVF3Z0N5QVBSZzBCQ3dOQUlBa2dDMEVEZEdvb0FnUWdER29oRENBTFFRRnFJZ3NnRDBjTkFBc0xJQkVnREJBVUlnazJBclFvSUFrTkFVR1hIZ3RCQUJBUElBcEJBVUgxUEVFQUVBOUJBQXdGQ3lBUklBdzJBcndvSUJFb0Fxd29JUWtnRVNnQ3FDZ2lEQVJBUVFBaEVrRUFJUXNEUUNBSklBdEJBM1FpRkdvaURTZ0NBQ0lQQkVBZ0VTZ0N0Q2dnRW1vZ0R5QU5LQUlFRUJJYUlCRW9BcXdvSUJScUlna29BZ1FoTHlBSktBSUFFQkFnRVNnQ3JDZ2lDU0FVYWtJQU53SUFJQzhnRW1vaEVpQVJLQUtvS0NFTUN5QUxRUUZxSWdzZ0RFa05BQXNMSUJGQkFEWUNxQ2dnQ1JBUUlCRkJBRFlDckNnZ0VTQVJLQUswS0RZQ3NDZ2dFU0FSS0FLOEtEWUN1Q2dMQW45QkFDRW9JQUFvQXRBQklnc29BaHdpSmlnQ1RDQUFLQUxNQVNJSlFZd3NiR29vQXRBcklSc2dDeWdDR0NJVUtBSVlJU2NnQ3lnQ0ZDZ0NBQ0llSUNZb0FnUWdKaWdDRENJTElBa2dDU0FtS0FJWUlnbHVJZ3dnQ1d4cmJHb2lEU0FVS0FJQUlna2dDU0FOU1JzaUR6WUNBQ0FlUVg4Z0N5QU5haUlKSUFrZ0RVa2JJZ3NnRkNnQ0NDSUpJQWtnQzBzYklnazJBZ2dDUUNBSklBOUtJQTlCQUU1eFJRUkFJQXBCQVVHQk0wRUFFQThNQVFzZ0hpZ0NGQ0VRSUI0Z0ppZ0NDQ0FNSUNZb0FoQWlDMnhxSWc4Z0ZDZ0NCQ0lKSUFrZ0Qwa2JJZ3cyQWdRZ0hrRi9JQXNnRDJvaUNTQUpJQTlKR3lJTElCUW9BZ3dpQ1NBSklBdExHeUlKTmdJTUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFkc3lRUUFRRHd3QkN3SkFJQnNvQWdRRVFDQWVLQUlRRFFGQkFRd0RDeUFLUVFGQjFTaEJBQkFQREFFTEFrQUNRQU5BSUNkQkFEWUNKQ0FRSUNjMEFnQWlOVUlCZlNJeElCNDBBZ0I4SURWL1BnSUFJQkFnSnpRQ0JDSTBRZ0Y5SWpJZ0hqUUNCSHdnTkg4K0FnUWdFQ0F4SUI0MEFnaDhJRFYvUGdJSUlCNDBBZ3doTVNBUUlDZzJBaEFnRUNBeElESjhJRFIvUGdJTUlCQWdHeWdDQkNJTE5nSVVJQkJCQVNBTElDWW9BbEFpQ1dzZ0NTQUxTeHMyQWhnZ0VDZ0NOQkFRSUJCQkFEWUNSQ0FRL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1FzQ05DQUxRWmdCYkNFTUFrQWdFQ2dDSENJSlJRUkFJQkFnREJBVUlnazJBaHdnQ1VVTkJTQVFJQXcyQWlBZ0NVRUFJQXdRRlJvTUFRc2dEQ0FRS0FJZ1RRMEFJQWtnREJBWElndEZCRUFnQ2tFQlFZQVhRUUFRRHlBUUtBSWNFQkFnRUVJQU53SWNEQVVMSUJBZ0N6WUNIQ0FMSUJBb0FpQWlDV3BCQUNBTUlBbHJFQlVhSUJBZ0REWUNJQXNnRUNnQ0ZDSUxCRUFnRzBHd0Iyb2hIU0FiUWF3R2FpRVlJQnRCSEdvaEZ5QVFLQUljSVJwQkFDRXJBMEFnR2tKL0lBdEJBV3NpQ2EwaU00WkNmNFVpTWlBUU5BSUFmQ0F6aDZjaUZqWUNBQ0FhSURJZ0VEUUNCSHdnTTRlbkloRTJBZ1FnR2lBeUlCQTBBZ2g4SURPSElqR25JaFEyQWdnZ0dpQXlJQkEwQWd4OElET0hJalNuSWcwMkFnd2dNY1JDQVNBWUlDdEJBblFpREdvb0FnQWlINjBpTVlaOFFnRjlJREdIcHlBZmRDSVBRUUJJRFFRZ05NUkNmeUFNSUIxcUtBSUFJaUN0SWpHR1FuK0ZmQ0F4aDZjZ0lIUWlERUVBU0EwRUlCb2dERUYvSUNCMElCRnhJaE5ySUNCMVFRQWdEU0FSUnhzaUREWUNGQ0FhSUE5QmZ5QWZkQ0FXY1NJaWF5QWZkVUVBSUJRZ0ZrY2JJZzgyQWhBQ1FDQVBSUTBBSUErdElBeXRma0lnaUZBTkFBd0VDeUFNSUE5c0lpTkI1OHlaTTA4TkF5QWpRU2hzSVNFZ0dpQXJCSDhnSUVFQmF5RWdJQjlCQVdzaEh5QVRyRUlCZkVJQmlLY2hFeUFpckVJQmZFSUJpS2NoSWtFREJVRUJDellDR0NBYVFSeHFJUlZDQVNBTHJTSTJoaUUzUW44Z0d5Z0NEQ0lMSUNBZ0N5QWdTUnNpTEswaVBJWkNmNFVoUFVKL0lCc29BZ2dpQ3lBZklBc2dIMGtiSWkydElqNkdRbitGSVQ5QkFDRXBBMEFDZmlBclJRUkFJRElnRURRQ0JId2dNNGNoT0NBeUlCQTBBZ0I4SURPSElUbEJBQ0VMSURJaU1TRTZJRE1NQVFzZ055QXBRUUZxSWd0QkFYYXRJRE9HUW4rRmZDSTZJQkEwQWdSOElEYUhJVGdnTnlBTFFRRnhyU0F6aGtKL2hYd2lNU0FRTkFJQWZDQTJoeUU1SURZTElUc2dFRFFDQ0NFMUlCQTBBZ3doTkNBVklEZytBZ1FnRlNBNVBnSUFJQlVnQ3pZQ0VDQVZJRFFnT253Z080YytBZ3dnRlNBeElEVjhJRHVIUGdJSVFRQWhEQUpBSUJzb0FoUkZEUUFnQzBVTkFFRUNRUUVnQzBFRFJoc2hEQXRFQUFBQUFBQUE4RDhoUWdKQUlDY29BaGdnREdvZ0Z5Z0NBQ0lNYXlJTFFZQUlUZ1JBUkFBQUFBQUFBT0IvSVVJZ0MwSC9EMGtFUUNBTFFmOEhheUVMREFJTFJBQUFBQUFBQVBCL0lVSkIvUmNnQ3lBTFFmMFhUeHRCL2c5cklRc01BUXNnQzBHQmVFb05BRVFBQUFBQUFBQmdBeUZDSUF0QnVIQkxCRUFnQzBISkIyb2hDd3dCQzBRQUFBQUFBQUFBQUNGQ1FmQm9JQXNnQzBId2FFMGJRWklQYWlFTEN5QVZJQmNvQWdTM1JBQUFBQUFBQUVBL29rUUFBQUFBQUFEd1A2QWdRaUFMUWY4SGFxMUNOSWEvb3FLMk9BSWdJQlVnRENBYktBS2tCbXBCQVdzMkFod2dGU2dDRkNFTEFrQUNRQUpBSUNORkRRQWdDdzBBSUJVZ0lSQVVJZ3MyQWhRZ0MwVUVRQ0FLUVFGQmxCVkJBQkFQREFvTElBdEJBQ0FoRUJVYUlCVWdJVFlDR0F3QkN5QWhJQlVvQWhoTEJFQWdDeUFoRUJjaURFVUVRQ0FLUVFGQmxCVkJBQkFQSUJVb0FoUVFFQ0FWUWdBM0FoUU1DZ3NnRlNBTU5nSVVJQXdnRlNnQ0dDSUxha0VBSUNFZ0Myc1FGUm9nRlNBaE5nSVlDeUFqUlEwQkN5QVZLQUlVSVF0QkFDRWtBMEFnQ3lBa0lDUWdHaWdDRUNJTWJpSVdJQXhzYXlJTklCOTBJQ0pxSWc4Z0ZTZ0NBQ0lNSUF3Z0QwZ2JJaEUyQWdBZ0N5QVdJQ0IwSUJOcUlnOGdGU2dDQkNJTUlBd2dEMGdiSWhRMkFnUWdDeUFOUVFGcUlCOTBJQ0pxSWc4Z0ZTZ0NDQ0lNSUF3Z0Qwb2JJZzAyQWdnZ0N5QVdRUUZxSUNCMElCTnFJZzhnRlNnQ0RDSU1JQXdnRDBvYklndzJBZ3dnQ3lBL0lBMnNmQ0EraDZjZ0VTQXRkU0lXYXlBdGRDQXRkU0lQTmdJUUlBc2dQU0FNckh3Z1BJZW5JQlFnTEhVaUVXc2dMSFFnTEhVaUREWUNGQ0FNSUE5c0lpV3RRZ2FHUWlDSVFnQlNCRUFnQ2tFQlFlVVZRUUFRRHd3SkN5QWxRUVowSVEwQ1FBSi9Ba0FnQ3lnQ0dDSU1EUUFnSlVVTkFDQUxJQTBRRkNJTU5nSVlJQXhGRFFzZ0RFRUFJQTBRRlJvZ0MwRWNhZ3dCQ3lBTklBc29BaHhORFFFZ0RDQU5FQmNpRDBVRVFDQUxLQUlZRUJBZ0MwSUFOd0lZSUFwQkFVSGpFa0VBRUE4TUN3c2dDeUFQTmdJWUlBOGdDeWdDSENJTWFrRUFJQTBnREdzUUZSb2dDMEVjYWdzZ0RUWUNBQXNnQ3lnQ0ZDRU5JQXNvQWhBaER5QUxBbjhnQ3lnQ0lDSU1SUVJBSUE4Z0RTQUtFR01NQVFzZ0RDQVBJQTBnQ2hCaEN6WUNJQ0FMS0FJVUlRMGdDeWdDRUNFUElBc0NmeUFMS0FJa0lneEZCRUFnRHlBTklBb1FZd3dCQ3lBTUlBOGdEU0FLRUdFTE5nSWtJQ1VFUUVFQUlSSURRQ0FTSUFzb0FoQWlEVzRoSEFKQUlBc29BaGdnRWtFR2RHb2lHU2dDQUNJVUJFQWdHU2dDT0NFUElCa29BZ1FoRENBWktBSXdJU29nR1NnQ1BCQVFJQm45REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJb0lCbENBRGNDT0NBWi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NHQ0FaL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1FzQ0NDQVpJQlEyQWdBZ0dTQXFOZ0l3SUNvRVFDQVVRUUFnS2tFWWJCQVZHZ3NnR1NBUE5nSTRJQmtnRERZQ0JBd0JDeUFaUVFwQkdCQVRJZ3cyQWdBZ0RFVU5DeUFaUVFvMkFqQUxJQmtnRWlBTklCeHNheUFXYWlJVUlDMTBJZzhnQ3lnQ0FDSU1JQXdnRDBnYk5nSUlJQmtnRVNBY2FpSU5JQ3gwSWc4Z0N5Z0NCQ0lNSUF3Z0QwZ2JOZ0lNSUJrZ0ZFRUJhaUF0ZENJUElBc29BZ2dpRENBTUlBOUtHellDRUNBWklBMUJBV29nTEhRaUR5QUxLQUlNSWd3Z0RDQVBTaHMyQWhRZ0VrRUJhaUlTSUNWSERRQUxDeUFMUVNocUlRc2dKRUVCYWlJa0lDTkhEUUFMQ3lBWFFRaHFJUmNnRlVFa2FpRVZJQ2xCQVdvaUtTQWFLQUlZU1EwQUN5QWFRWmdCYWlFYUlBa2hDeUFyUVFGcUlpc2dFQ2dDRkVrTkFBc0xJQ2RCTkdvaEp5QVFRY3dBYWlFUUlCdEJ1QWhxSVJzZ0tFRUJhaUlvSUI0b0FoQkpEUUFMUVFFTUF3c2dDa0VCUVpRV1FRQVFEd3dCQ3lBS1FRRkJzeEZCQUJBUEMwRUFDMFVFUUNBS1FRRkJ3aHRCQUJBUFFRQU1CQXNnQUNnQ3pBRWhDU0FPSUFBb0FtZ2dBQ2dDYkd3MkFnUWdEaUFKUVFGcU5nSUFJQXBCQkVHKzF3QWdEaEFQSUFFZ0FDZ0N6QUUyQWdBZ0NFRUJOZ0lBSUFJRVFDQUNJQUFvQXRBQlFRQVFWQ0lCTmdJQVFRQWdBVUYvUmcwRUdnc2dBeUFBS0FMUUFTZ0NGQ2dDQUNJQktBSUFOZ0lBSUFRZ0FTZ0NCRFlDQUNBRklBRW9BZ2cyQWdBZ0JpQUJLQUlNTmdJQUlBY2dBU2dDRURZQ0FDQUFJQUFvQWdoQmdBRnlOZ0lJQzBFQkRBSUxJQXBCQVNBU1FRQVFEd3NnQ2tFQlFlUWJRUUFRRDBFQUN5RXdJQTVCMEFCcUpBQWdNQXZlRUFJTmZ3SitBa0FnQUNnQ0lDSUZEUUFDUUNBQUtBSVFJZ2xCQlVvRVFDQUpJUU1NQVFzQ1FBSkFJQUFvQWhRaUFrRUZUZ1JBSUFBb0FnQWlBU2dDQUNFRklBQWdBVUVFYWpZQ0FDQUNRUVJySVFjTUFRc2dBa0VBVEFSQVFYOGhCUXdDQ3lBQUtBSUFJUUVDZnlBQ1FRRkdCRUJCZnlFR1FRQU1BUXRCZnlFR0lBSkJBV3NpQTBFQmNTRU5Ba0FnQWtFQ1JnUkFRUUFoQlNBQ0lRUU1BUXNnQTBGK2NTRUxRUUFoQlNBQklRTWdBaUVFQTBBZ0FDQURRUUZxTmdJQUlBTXRBQUFoRENBQUlBTkJBbW9pQVRZQ0FDQUFJQVJCQVdzMkFoUWdBeTBBQVNFRElBQWdCRUVDYXlJRU5nSVVJQVpCL3dFZ0JYUkJmM054SUF3Z0JYUnlRWUQrQXlBRmRFRi9jM0VnQXlBRlFRaHlkSEloQmlBRlFSQnFJUVVnQVNFRElBaEJBbW9pQ0NBTFJ3MEFDd3NnRFFSQUlBQWdBVUVCYWlJRE5nSUFJQUV0QUFBaEFTQUFJQVJCQVdzMkFoUWdCa0gvQVNBRmRFRi9jM0VnQVNBRmRISWhCaUFESVFFTElBSkJBM1JCQ0dzTElRVWdBQ0FCUVFGcU5nSUFJQVpCL3dFZ0JYUkJmM054SUFFdEFBQkJEM0lnQlhSeUlRVUxJQUFnQnpZQ0ZBc2dBQ2dDR0NFQklBQWdCVUVZZGlJSFFmOEJSallDR0NBQUlBa2dCVUVRZGtIL0FYRWlDRUgvQVVZaUNpQUZRUWgyUWY4QmNTSUxRZjhCUmlJTUlBRWdCVUgvQVhFaUJFSC9BVVlpQW1wcWFpSUJhMEVnYWlJRE5nSVFJQUFnQUNrRENDQUVRUWRCQ0NBQ0czUWdDM0pCQjBFSUlBd2JkQ0FJY2tFSFFRZ2dDaHQwSUFkeXJTQUJJQWxyUVNCcXJZYUVOd01JUVFBaEJTQURRUVpJRFFFTElBQW9BaHdpQVVFQ2RFR2duUUZxS0FJQUlRSUNmaUFBS1FNSUlnNUNBRk1FUUVFTUlBRkJBV29nQVVFTFRoc2hCQ0FEUVFGcklRTkJmeUFDZEVGL2MwRUJkQ0VCUWdFTUFRc2dBVUVCYTBFQUlBRkJBVW9iSVFRZ0RrRS9JQUpycllpblFYOGdBblJCZjNOeFFRRjBRUUZ5SVFFZ0F5QUNRUUZxSWdKcklRTWdBcTBMSVE4Z0FDQUROZ0lRSUFBZ0JEWUNIQ0FBSUE0Z0Q0WTNBd2dnQUNBQnJDQUFLUU1vUWtDRGhEY0RLRUVCSVFVZ0EwRUdTQTBBSUFBb0Fod2lBVUVDZEVHZ25RRnFLQUlBSVFJQ2ZpQUFLUU1JSWc1Q0FGTUVRRUVNSUFGQkFXb2dBVUVMVGhzaEJDQURRUUZySVFOQmZ5QUNkRUYvYzBFQmRDRUJRZ0VNQVFzZ0FVRUJhMEVBSUFGQkFVb2JJUVFnRGtFL0lBSnJyWWluUVg4Z0FuUkJmM054UVFGMFFRRnlJUUVnQXlBQ1FRRnFJZ0pySVFNZ0FxMExJUThnQUNBRE5nSVFJQUFnQkRZQ0hDQUFJQTRnRDRZM0F3Z2dBQ0FBS1FNb1F2OUFneUFCckVJSGhvUTNBeWhCQWlFRklBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQm9KMEJhaWdDQUNFQ0FuNGdBQ2tEQ0NJT1FnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBMEVCYXlFRFFYOGdBblJCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUE1QlB5QUNhNjJJcDBGL0lBSjBRWDl6Y1VFQmRFRUJjaUVCSUFNZ0FrRUJhaUlDYXlFRElBS3RDeUVQSUFBZ0F6WUNFQ0FBSUFRMkFod2dBQ0FPSUErR053TUlJQUFnQUNrREtFTC8vMENESUFHc1FnNkdoRGNES0VFRElRVWdBMEVHU0EwQUlBQW9BaHdpQVVFQ2RFR2duUUZxS0FJQUlRSUNmaUFBS1FNSUlnNUNBRk1FUUVFTUlBRkJBV29nQVVFTFRoc2hCQ0FEUVFGcklRTkJmeUFDZEVGL2MwRUJkQ0VCUWdFTUFRc2dBVUVCYTBFQUlBRkJBVW9iSVFRZ0RrRS9JQUpycllpblFYOGdBblJCZjNOeFFRRjBRUUZ5SVFFZ0F5QUNRUUZxSWdKcklRTWdBcTBMSVE4Z0FDQUROZ0lRSUFBZ0JEWUNIQ0FBSUE0Z0Q0WTNBd2dnQUNBQUtRTW9Rdi8vLzBDRElBR3NRaFdHaERjREtFRUVJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUdnblFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8vOUFneUFCckVJY2hvUTNBeWhCQlNFRklBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQm9KMEJhaWdDQUNFQ0FuNGdBQ2tEQ0NJT1FnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBMEVCYXlFRFFYOGdBblJCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUE1QlB5QUNhNjJJcDBGL0lBSjBRWDl6Y1VFQmRFRUJjaUVCSUFNZ0FrRUJhaUlDYXlFRElBS3RDeUVQSUFBZ0F6WUNFQ0FBSUFRMkFod2dBQ0FPSUErR053TUlJQUFnQUNrREtFTC8vLy8vLzBDRElBR3RRaU9HaERjREtFRUdJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUdnblFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8vLy8vMENESUFHdFFpcUdoRGNES0VFSElRVWdBMEVHU0EwQUlBQW9BaHdpQVVFQ2RFR2duUUZxS0FJQUlRSUNmaUFBS1FNSUlnNUNBRk1FUUVFTUlBRkJBV29nQVVFTFRoc2hCQ0FEUVFGcklRTkJmeUFDZEVGL2MwRUJkQ0VCUWdFTUFRc2dBVUVCYTBFQUlBRkJBVW9iSVFRZ0RrRS9JQUpycllpblFYOGdBblJCZjNOeFFRRjBRUUZ5SVFFZ0F5QUNRUUZxSWdKcklRTWdBcTBMSVE4Z0FDQUROZ0lRSUFBZ0JEWUNIQ0FBSUE0Z0Q0WTNBd2dnQUNBQUtRTW9Rdi8vLy8vLy8vOUFneUFCclVJeGhvUTNBeWhCQ0NFRkN5QUFJQVZCQVdzMkFpQWdBQ0FBS1FNb0lnNUNCNGczQXlnZ0RxZEIvd0J4Q3lJQkFYOGdBQVJBSUFBb0Fnd2lBUVJBSUFFUUVDQUFRUUEyQWd3TElBQVFFQXNMaWdFQ0FYNEZmd0pBSUFCQ2dJQ0FnQkJVQkVBZ0FDRUNEQUVMQTBBZ0FVRUJheUlCSUFCQ0NvQWlBa0wyQVg0Z0FIeW5RVEJ5T2dBQUlBQkMvLy8vLzU4QlZpRUdJQUloQUNBR0RRQUxDeUFDUWdCU0JFQWdBcWNoQXdOQUlBRkJBV3NpQVNBRFFRcHVJZ1JCOWdGc0lBTnFRVEJ5T2dBQUlBTkJDVXNoQnlBRUlRTWdCdzBBQ3dzZ0FRdjU0Z0VFZW44R2V3aCtBWDBqQUVFUWF5Sk9KQUFDUUNBQUxRQUlRWUFCY1VVTkFDQUFLQUxNQVNBQlJ3MEFJQUFvQXB3QklBRkJqQ3hzYWlKUEtBTGNLeUlWUlFSQUlFOFFMZ3dCQ3lBQUtBTElBUm9nQUNnQzBBRWhHU0FBS0FKTUlnZEZCRUFnQUNnQ1NDRUhDeUFIS0FJQUlRWWdCeWdDQkNFTElBY29BZ2doQ1NBSEtBSU1JUTBnQUNnQ1BDRUhJQUFvQWtBaENDQlBLQUxnS3lFS0l3QkJFR3NpUUNRQUlCa2dBVFlDSkNBWktBSWNLQUpNSVF3Z0dVRUJOZ0pBSUJrZ0RUWUNQQ0FaSUFrMkFqZ2dHU0FMTmdJMElCa2dCallDTUNBWklBd2dBVUdNTEd4cU5nSWdJQmtvQWtRUUVFRUFJUXNnR1VFQU5nSkVBa0FnQndSQVFRUWdHU2dDR0NnQ0VCQVRJZ3RGQkVBTUFndEJBQ0VOUVFBaENTQUhRUVJQQkVBZ0IwRjhjU0VNUVFBaEFRTkFJQXNnQ0NBSlFRSjBhaUlHS0FJQVFRSjBha0VCTmdJQUlBc2dCaWdDQkVFQ2RHcEJBVFlDQUNBTElBWW9BZ2hCQW5ScVFRRTJBZ0FnQ3lBR0tBSU1RUUowYWtFQk5nSUFJQWxCQkdvaENTQUJRUVJxSWdFZ0RFY05BQXNMSUFkQkEzRWlBUVJBQTBBZ0N5QUlJQWxCQW5ScUtBSUFRUUowYWtFQk5nSUFJQWxCQVdvaENTQU5RUUZxSWcwZ0FVY05BQXNMSUJrZ0N6WUNSQXNDUUFKQUlCa29BaGdpQmlnQ0VDSU5SUTBBUVFBaENRSkFBMEFDUUNBTEJFQWdDeUFKUVFKMGFpZ0NBRVVOQVFzZ0JpZ0NHQ0FKUVRSc2FpSUJOUUlFSW9ZQlFnRjlJb29CSUJrMUFqeDhJSVlCZ0NHTEFTQUJOUUlBSW9jQlFnRjlJb2dCSUJrMUFqaDhJSWNCZ0NHTUFTQ0tBU0FaTlFJMGZDQ0dBWUFoaGdFZ0dTZ0NGQ2dDQUNnQ0ZDQUpRY3dBYkdvaUFTZ0NGQ0FCS0FJWWF5SUhRUjlMRFFBQ1FDQ0lBU0FaTlFJd2ZDQ0hBWUNuSWdnZ0FTZ0NBR3NpREVFQUlBZ2dERThiSUFkMkRRQWdoZ0duSWdnZ0FTZ0NCR3NpREVFQUlBZ2dERThiSUFkMkRRQWdBU2dDQ0NJSUlJd0JwMnNpREVFQUlBZ2dERThiSUFkMkRRQWdBU2dDRENJQklJc0JwMnNpQ0VFQUlBRWdDRThiSUFkMlJRMEJDeUFaUVFBMkFrQU1BZ3NnQ1VFQmFpSUpJQTFIRFFBTElCa29Ba0JGRFFBZ0RVVU5BVUVBSVEwRFFDQVpLQUlVS0FJQUtBSVVJQTFCekFCc2FpSUJLQUljSUFFb0FoaEJtQUZzYWlJSFFaUUJheWdDQUNFR0lBZEJqQUZyS0FJQUlRc2dCMEdZQVdzb0FnQWhDU0FIUVpBQmF5Z0NBQ0VJQWtBZ0dTZ0NSQ0lIQkVBZ0J5QU5RUUowYWlnQ0FFVU5BUXNnQ3lBR2F5RUhJQWdnQ1dzaENRSkFJQVlnQzBZTkFDQUhyU0FKclg1Q0lJaFFEUUFnQlVFQlFaUVdRUUFRRHd3R0N5QUhJQWxzSWdkQmdJQ0FnQVJQQkVBZ0JVRUJRWlFXUVFBUUR3d0dDeUFCSUFkQkFuUWlCellDTEFKL0FrQUNRQUpBSUFFb0FpUWlCZ1JBSUFjZ0FTZ0NNRTBOQlNBQktBSW9EUUVMSUFFZ0J4QVlJZ2MyQWlRZ0IwRUJJQUVvQWl3aUJ4dEZEUUVnQVNBSE5nSXdJQUZCS0dvTUF3c2dCaEFRSUFFZ0FTZ0NMQkFZSWdjMkFpUWdCdzBCSUFGQkFEWUNNQ0FCUWdBM0FpZ0xJQVZCQVVHVUZrRUFFQThNQndzZ0FTQUJLQUlzTmdJd0lBRkJLR29MUVFFMkFnQUxJQTFCQVdvaURTQVpLQUlZSWdZb0FoQkpEUUFMREFFTElBMUZEUUFnQmlnQ0dDRVBJQmtvQWhRb0FnQW9BaFFoRmtFQUlRRURRQUpBSUFzRVFDQUxJQUZCQW5ScUtBSUFSUTBCQ3lBV0lBRkJ6QUJzYWlJSElBY29BZ0FpQ1NBUElBRkJOR3hxSWdnMUFnQWloZ0ZDQVgwaWlnRWdHVFVDTUh3Z2hnR0FweUlNSUFrZ0RFc2JJZ2syQWpnZ0J5QUhLQUlFSWd3Z0NEVUNCQ0tIQVVJQmZTS0xBU0FaTlFJMGZDQ0hBWUNuSWdnZ0NDQU1TUnNpQ0RZQ1BDQUhJQWNvQWdnaURDQ0tBU0FaTlFJNGZDQ0dBWUNuSWhjZ0RDQVhTUnNpRERZQ1FDQUhJQWNvQWd3aUZ5Q0xBU0FaTlFJOGZDQ0hBWUNuSWc0Z0RpQVhTeHNpRnpZQ1JDQUpJQXhMRFFNZ0NDQVhTdzBESUFjb0FoUWlEa1VOQUNBT3JTR0xBU0FYclNHSUFTQU1yU0dNQVNBSXJTR05BU0FKclNHSkFTQUhLQUljSVFsQ0FDR0hBUU5BSUFrZ2h3R25JZ2hCbUFGc2FpSUhRbjhnRGlBSVFYOXphcTBpaGdHR1FuK0ZJb29CSUlnQmZDQ0dBWWcrQXBRQklBY2dpZ0VnakFGOElJWUJpRDRDa0FFZ0J5Q0tBU0NOQVh3Z2hnR0lQZ0tNQVNBSElJa0JJSW9CZkNDR0FZZytBb2dCSUljQlFnRjhJb2NCSUlzQlVnMEFDd3NnQVVFQmFpSUJJQTFIRFFBTEN5QkFRUUEyQWdnZ0dTZ0NIQ0VCUVFGQkNCQVRJaHNFUUNBYklBRTJBZ1FnR3lBR05nSUFDeUFiUlEwQklCa29BaVFoRVNBWktBSVVLQUlBSVNBakFFSHdBR3NpRXlRQUlCRkJqQ3hzSWdFZ0d5Z0NCQ0lJS0FKTWFpSWNLQUtrQXlFb0FuOGdHeWdDQUNJZUlSY2dCU0V6UVFBaERTTUFRU0JySWc4a0FDQUJJQWdvQWt4cUloMG9BcVFESVJnQ1FDQVhLQUlRSWhaQmtBUnNFQlFpREVVTkFBSkFJQlpCQW5RUUZDSUxSUVJBSUF3aEN3d0JDd0ovSUFnb0Frd2dFVUdNTEd4cUlna29BcVFESWhwQkFXb2lBVUh3QVJBVElnY0VRQUpBSUFFRVFDQVhLQUlRSVE0Z0J5RUJBMEFnQVNBek5nTHNBU0FCSUE1QkVCQVRJZ1kyQXNnQklBWkZEUUlnQVNBWEtBSVFJaDgyQXNRQlFRQWhCa0VBSVE0Z0h3UkFBMEFnQVNnQ3lBRWdCa0VFZEdvaURpQUpLQUxRS3lBR1FiZ0liR29pSHlnQ0JFRVFFQk1pSVRZQ0RDQWhSUTBFSUE0Z0h5Z0NCRFlDQ0NBR1FRRnFJZ1lnRnlnQ0VDSU9TUTBBQ3dzZ0FVSHdBV29oQVNBU0lCcEdJWE1nRWtFQmFpRVNJSE5GRFFBTEN5QUhEQUlMSUFjb0FnUWlBUVJBSUFFUUVDQUhRUUEyQWdRTElBY2hBVUVBSVFrRFFDQUJLQUxJQVNJR0JFQkJBQ0VPSUFFb0FzUUJJaElFZndOQUlBWW9BZ3dpSHdSQUlCOFFFQ0FHUVFBMkFnd2dBU2dDeEFFaEVnc2dCa0VRYWlFR0lBNUJBV29pRGlBU1NRMEFDeUFCS0FMSUFRVWdCZ3NRRUNBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFrZ0drWWhkQ0FKUVFGcUlRa2dkRVVOQUFzZ0J4QVFDMEVBQ3lJSEJFQUNRQ0FXUlEwQVFRQWhDU0FNSVFZZ0ZrRUVUd1JBSUFZZ0ZrRjhjU0lKUVpBRWJHb2hCaUFNSVFFRFFDQUxJQkJCQW5ScUlBSDlFZjBNQUFBQUFCQUNBQUFnQkFBQU1BWUFBUDJ1QWYwTEFnQWdBVUhBRUdvaEFTQVFRUVJxSWhBZ0NVY05BQXNnQ1NBV1JnMEJDd05BSUFzZ0NVRUNkR29nQmpZQ0FDQUdRWkFFYWlFR0lBbEJBV29pQ1NBV1J3MEFDd3NnQ3lFT1FRQWhFaUFJS0FKTUlCRkJqQ3hzYWlnQzBDc2hBU0FYS0FJWUlRa2dEeUFJS0FJRUlBZ29BZ3dnRVNBUklBZ29BaGdpQm00aUN5QUdiR3RzYWlJR0lCY29BZ0FpRUNBR0lCQkxHellDRkNBUFFYOGdCaUFJS0FJTWFpSVFJQVlnRUVzYklnWWdGeWdDQ0NJUUlBWWdFRWtiTmdJUUlBOGdDQ2dDQ0NBSUtBSVFJQXRzYWlJR0lCY29BZ1FpQ3lBR0lBdExHellDRENBUFFYOGdCaUFJS0FJUWFpSUxJQVlnQzBzYklnWWdGeWdDRENJTElBWWdDMGtiTmdJSUlBOUJBRFlDR0NBUFFRQTJBaHdnRDBILy8vLy9CellDQkNBUFFmLy8vLzhITmdJQUlCY29BaEFFUUFOQUlBNEVmeUFPSUJKQkFuUnFLQUlBQlVFQUN5RUxJQWsxQWdRaWhnRkNBWDBpaWdFZ0R6VUNDSHdnaGdHQUlZc0JJQWsxQWdBaWh3RkNBWDBpaUFFZ0R6VUNFSHdnaHdHQUlZd0JJSW9CSUE4MUFneDhJSVlCZ0NHR0FTQ0lBU0FQTlFJVWZDQ0hBWUFoaHdFZ0FTZ0NCQ0lJSUE4b0FoeExCRUFnRHlBSU5nSWNJQUVvQWdRaENBc2dDQVJBSUlzQlF2Ly8vLzhQZ3lHS0FTQ01BVUwvLy8vL0Q0TWhpd0VnaGdGQy8vLy8vdytESVlnQklJY0JRdi8vLy84UGd5R01BU0FCUWJBSGFpRWZJQUZCckFacUlTRkJBQ0VhQTBBZ0h5QWFRUUowSWhCcUtBSUFJUVlnRUNBaGFpZ0NBQ0VSUVFBaEVDQUxCRUFnQ3lBR05nSUVJQXNnRVRZQ0FDQUxRUWhxSVJBTEFrQWdFU0FJUVFGcklnaHFJZ3RCSDBzTkFDQUpLQUlBSWlKQmZ5QUxka3NOQUNBUElBOG9BZ1FpSnlBaUlBdDBJZ3NnQ3lBblN4czJBZ1FMQWtBZ0JpQUlhaUlMUVI5TERRQWdDU2dDQkNJaVFYOGdDM1pMRFFBZ0R5QVBLQUlBSWljZ0lpQUxkQ0lMSUFzZ0owc2JOZ0lBQzBFQUlRc2dpZ0ZDZnlBSXJTS0dBWVpDZjRVaWh3RjhJSVlCaUNLTkFVTC8vLy8vRDROQ0FTQUdyU0tKQVlaOFFnRjlJSWtCaUtjZ2h3RWdpQUY4SUlZQmlLY2lJaUFHZG10QmZ5QUdkbkZCQUNBaUlJMEJwMGNiSVFZZ2h3RWdpd0Y4SUlZQmlDS05BVUwvLy8vL0Q0TkNBU0FSclNLSkFZWjhRZ0Y5SUlrQmlLY2dod0VnakFGOElJWUJpS2NpSWlBUmRtdEJmeUFSZG5GQkFDQWlJSTBCcDBjYklSRWdFQVJBSUJBZ0JqWUNCQ0FRSUJFMkFnQWdFRUVJYWlFTEN5QUdJQkZzSWdZZ0R5Z0NHRXNFUUNBUElBWTJBaGdMSUJwQkFXb2lHaUFCS0FJRVNRMEFDd3NnQ1VFMGFpRUpJQUZCdUFocUlRRWdFa0VCYWlJU0lCY29BaEJKRFFBTEN5QVlRUUZxSVNFZ0R5Z0NIQ0VSSUE4b0FoZ2hFaUFIUVFBMkFnUUNRQ0FkS0FJSVFRRnFJZ0d0SUJFZ0VpQVdiQ0lpYkNJYXJYNUNJSWhRQkVBZ0J5QUJJQnBzSWdFMkFnZ2dCeUFCUVFJUUV5SUJOZ0lFSUFFTkFRc2dEQkFRSUE0UUVDQUhLQUlFSWdFRVFDQUJFQkFnQjBFQU5nSUVDeUFoUlFSQUlBY2hDd3dEQzBFQUlRc2dCeUVCQTBBZ0FTZ0N5QUVpQ1FSQVFRQWhCaUFCS0FMRUFTSVFCSDhEUUNBSktBSU1JZ2dFUUNBSUVCQWdDVUVBTmdJTUlBRW9Bc1FCSVJBTElBbEJFR29oQ1NBR1FRRnFJZ1lnRUVrTkFBc2dBU2dDeUFFRklBa0xFQkFnQVVFQU5nTElBUXNnQVVId0FXb2hBU0FMSUJoR0lYVWdDMEVCYWlFTElIVkZEUUFMSUFjaEN3d0NDeUFYS0FJWUlSY2dCeUFQS0FJVUlpYzJBc3dCSUFjZ0R5Z0NEQ0l3TmdMUUFTQUhJQThvQWhBaUxUWUMxQUVnQnlBUEtBSUlJaXMyQXRnQklBY2dHallDRENBSElDSTJBaEFnQnlBU05nSVVRUUVoSHlBSFFRRTJBaGdnRmdSQUlBY29Bc2dCSVFGQkFDRUlJQmNoQ3dOQUlBNGdDRUVDZEdvb0FnQWhDU0FCSUFzb0FnQTJBZ0FnQVNBTEtBSUVOZ0lFQWtBZ0FTZ0NDQ0lOUlEwQUlBRW9BZ3doQmlBTlFRRkhCRUFnRFVGK2NTRXZRUUFoRUFOQUlBWWdDU2dDQURZQ0FDQUdJQWtvQWdRMkFnUWdCaUFKS0FJSU5nSUlJQVlnQ1NnQ0REWUNEQ0FHSUFrb0FoQTJBaEFnQmlBSktBSVVOZ0lVSUFZZ0NTZ0NHRFlDR0NBR0lBa29BaHcyQWh3Z0JrRWdhaUVHSUFsQklHb2hDU0FRUVFKcUloQWdMMGNOQUFzTElBMUJBWEZGRFFBZ0JpQUpLQUlBTmdJQUlBWWdDU2dDQkRZQ0JDQUdJQWtvQWdnMkFnZ2dCaUFKS0FJTU5nSU1DeUFMUVRScUlRc2dBVUVRYWlFQklBaEJBV29pQ0NBV1J3MEFDd3NnSVVFQlN3UkFJQWNoRFFOQUlBMGdLellDeUFNZ0RTQXROZ0xFQXlBTklEQTJBc0FESUEwZ0p6WUN2QU1nRFVFQk5nS0lBaUFOSUJJMkFvUUNJQTBnSWpZQ2dBSWdEU0FhTmdMOEFTQVdCRUFnRFNnQ3VBTWhBVUVBSVFnZ0Z5RUxBMEFnRGlBSVFRSjBhaWdDQUNFSklBRWdDeWdDQURZQ0FDQUJJQXNvQWdRMkFnUUNRQ0FCS0FJSUlpRkZEUUFnQVNnQ0RDRUdJQ0ZCQVVjRVFDQWhRWDV4SVM5QkFDRVFBMEFnQmlBSktBSUFOZ0lBSUFZZ0NTZ0NCRFlDQkNBR0lBa29BZ2cyQWdnZ0JpQUpLQUlNTmdJTUlBWWdDU2dDRURZQ0VDQUdJQWtvQWhRMkFoUWdCaUFKS0FJWU5nSVlJQVlnQ1NnQ0hEWUNIQ0FHUVNCcUlRWWdDVUVnYWlFSklCQkJBbW9pRUNBdlJ3MEFDd3NnSVVFQmNVVU5BQ0FHSUFrb0FnQTJBZ0FnQmlBSktBSUVOZ0lFSUFZZ0NTZ0NDRFlDQ0NBR0lBa29BZ3cyQWd3TElBdEJOR29oQ3lBQlFSQnFJUUVnQ0VFQmFpSUlJQlpIRFFBTEN5QU5JQTBwQWdRM0F2UUJJQmdnSDBjaGRpQU5RZkFCYWlFTklCOUJBV29oSHlCMkRRQUxDeUFNRUJBZ0RoQVFJQjBvQXFRRElRc0NRQ0FkTFFDSUxFRUVjUVJBSUF0QmYwWU5BU0FkUWFnRGFpRUdJQjBvQWdnaEFVRUFJUkFnQnlFSkEwQWdCaWdDSkNFTklBbEJBVFlDTENBSklBMDJBbFFnQ1NBR0tBSUFOZ0l3SUFZb0FnUWhEU0FKUWdBM0FrUWdDU0FOTmdJMElBa2dCaWdDRERZQ1BDQUpJQVlvQWhBMkFrQWdCaWdDQ0NFTklBa2dFallDVENBSklBMGdBU0FCSUExTEd6WUNPQ0FHUVpRQmFpRUdJQWxCOEFGcUlRa2dDeUFRUmlGM0lCQkJBV29oRUNCM1JRMEFDd3dCQ3lBTFFYOUdEUUFnSFNnQ0NDRUdJQjBvQWdRaERTQUhJUWtnQ3dSQUlBdEJBV3BCZm5FaENFRUFJUUVEUUNBSlFnQTNBa1FnQ1VFQU5nSTBJQWxDQVRjQ0xDQUpJQTAyQWxRZ0NTQVJOZ0k4SUFrZ0RUWUN4QUlnQ1NBU05nSk1JQWtnQmpZQ09DQUpRZ0EzQXJRQ0lBbEJBRFlDcEFJZ0NVSUJOd0tjQWlBSklCRTJBcXdDSUFrZ0JqWUNxQUlnQ1NBU05nSzhBaUFKSUFrb0FzUUJOZ0pBSUFrZ0NTZ0N0QU0yQXJBQ0lBbEI0QU5xSVFrZ0FVRUNhaUlCSUFoSERRQUxDeUFMUVFGeERRQWdDVUlBTndKRUlBbEJBRFlDTkNBSlFnRTNBaXdnQ1NBTk5nSlVJQWtnRVRZQ1BDQUpJQkkyQWt3Z0NTQUdOZ0k0SUFrZ0NTZ0N4QUUyQWtBTElBY2hEUXdDQ3lBTUVCQUxJQXNRRUFzZ0QwRWdhaVFBUVFBZ0RTSUhSUTBBR2lBb1FRRnFJUTRnRlNFZElBY2hDd0pBQWtBRFFDQUxLQUpVUVg5R0RRSWdIaWdDRUVFQ2RCQVVJZ0ZGRFFJZ0FVRUJJQjRvQWhCQkFuUVFGU0VKSUFzUVZ3UkFBMEFnSUNnQ0ZDRUlBa0FDUUNBTEtBSW9JQndvQWd4UERRQWdDeWdDSUNJQklBZ2dDeWdDSEVITUFHeHFJZ1lvQWhoUERRQWdCaWdDSENBQlFaZ0JiR29pRFNnQ0dFVU5BQ0FOUVJ4cUlRaEJBQ0VCQWtBRFFDQVpJQXNvQWh3Z0N5Z0NJQ0FJSUFGQkpHeHFJZ1lvQWhBZ0JpZ0NGQ0FMS0FJa1FTaHNhaUlHS0FJQUlBWW9BZ1FnQmlnQ0NDQUdLQUlNRURsRkJFQWdBVUVCYWlJQklBMG9BaGhKRFFFTUFnc0xJQWtnQ3lnQ0hFRUNkR3BCQURZQ0FDQVRRUUEyQW1nZ0d5Z0NCQ0FnS0FJVUlCd2dDeUFUUWV3QWFpQWRJQk5CNkFCcUlBb2dNeEJXUlEwR0lBc29BaUFoQ0NBTEtBSWNJUllnRXlnQ2FDRWFJQk1vQW13RVFDQVRRUUEyQW1nZ0lDZ0NGQ0FXUWN3QWJHb29BaHdnQ0VHWUFXeHFJaDhvQWhnaUFRUi9JQW9nR21zaEdDQUtJQjFxSVNFZ0gwRWNhaUVNUVFBaEVVRUFJUThnR2lBZGFpSWlJUklEUUFKQUlBd29BZ2dnRENnQ0FFWU5BQ0FNS0FJTUlBd29BZ1JHRFFBZ0RDZ0NGQ0FMS0FJa1FTaHNhaUlHS0FJVUlBWW9BaEJzSWloRkRRQWdCaWdDR0NFQlFRQWhGZ05BSUE4RVFDQUJRUUEyQWpRTElBRW9BaVFpRndSQUlBRW9BZ0FoQ0FKQUlBRWdBU2dDS0NJR0JIOGdDQ0FHUVJoc2FpSUlRUlJyS0FJQUlBaEJER3NvQWdCSEJFQWdDRUVZYXlFSURBSUxJQVpCQVdvRlFRRUxOZ0lvQ3dKQUEwQUNRQUpBQWtBZ0NDZ0NGQ0lOSUJKQmYzTkxEUUFnRHcwQUlBMGdFbW9nSVUwTkFRc2dDeWdDSENFR0lBc29BaUFoRnlBTEtBSWtJUThnR3lnQ0JDZ0NhQVJBSUJNZ0JqWUNXQ0FUSUJjMkFsUWdFeUFSTmdKUUlCTWdEellDVENBVElCWTJBa2dnRXlBWU5nSkVJQk1nRFRZQ1FDQXpRUUZCOHUwQUlCTkJRR3NRRHd3UkN5QVRJQVkyQWpnZ0V5QVhOZ0kwSUJNZ0VUWUNNQ0FUSUE4MkFpd2dFeUFXTmdJb0lCTWdHRFlDSkNBVElBMDJBaUFnTTBFQ1FmTHRBQ0FUUVNCcUVBOGdBVUVBTmdJMElBZ2dDQ2dDRUNJR0lBZ29BZ1JxTmdJRUlBRWdBU2dDSkNJTklBWnJJaGMyQWlSQkFTRVBJQVlnRFVZTkFTQUJJQUVvQWloQkFXb2lDRFlDS0F3REN5QUJLQUlFSVJBZ0FTZ0NOQ0lQSUFFb0FqaEhCSDhnRndVZ0VDQVBRUUYwUVFGeUlnWkJBM1FRRnlJUVJRUkFJRE5CQVVHQUNFRUFFQThNRVFzZ0FTQUdOZ0k0SUFFZ0VEWUNCQ0FCS0FJMElROGdDQ2dDRkNFTklBRW9BaVFMSVFZZ0VDQVBRUU4wYWlJWElBMDJBZ1FnRnlBU05nSUFJQUVnRDBFQmFqWUNOQ0FJSUFnb0FnQWdEV28yQWdBZ0NDQUlLQUlRSWhBZ0NDZ0NCR29pRHpZQ0JDQUJJQVlnRUdzaUZ6WUNKQ0FJSUE4MkFnZ2dEU0FTYWlFU1FRQWhEeUFHSUJCR0RRQWdBU0FCS0FJb1FRRnFOZ0lvSUFoQkdHb2hDQXNnRncwQUN5QUJLQUlvSVFnTElBRWdDRFlDTEFzZ0FVRkFheUVCSUJaQkFXb2lGaUFvUncwQUN5QWZLQUlZSVFFTElBeEJKR29oRENBUlFRRnFJaEVnQVVrTkFBc2dDeWdDSENFV0lBc29BaUFoQ0NBWUlCSWdJbXNnRHhzRlFRQUxJQnBxSVJvTElCNG9BaGdnRmtFMGJHb2lBU0FJSUFFb0FpUWlBU0FCSUFoSkd6WUNKQXdDQ3lBZ0tBSVVJUWdMSUJOQkFEWUNhQ0FiS0FJRUlBZ2dIQ0FMSUJOQjdBQnFJQjBnRTBIb0FHb2dDaUF6RUZaRkRRUWdDeWdDSENFV0lCTW9BbWdoR2lBVEtBSnNSUTBBQWtBZ0lDZ0NGQ0FXUWN3QWJHb29BaHdnQ3lnQ0lDSWlRWmdCYkdvaUFTZ0NHQ0lvUlFSQVFRQWhGd3dCQ3lBS0lCcHJJUkFnQVVFY2FpRU1JQXNvQWlRaElVRUFJUmRCQUNFWUEwQUNRQ0FNS0FJSUlBd29BZ0JHRFFBZ0RDZ0NEQ0FNS0FJRVJnMEFJQXdvQWhRZ0lVRW9iR29pQVNnQ0ZDQUJLQUlRYkNJblJRMEFJQUVvQWhnaEVVRUFJUjhEUUNBUktBSWtJZ0VFUUNBUktBSUFJUWdDUUNBUklCRW9BaWdpRWdSL0lBZ2dFa0VZYkdvaUNFRVVheWdDQUNBSVFReHJLQUlBUndSQUlBaEJHR3NoQ0F3Q0N5QVNRUUZxQlVFQkN5SVNOZ0lvQ3dKQUFrQWdDQ2dDRkNJUElCZHFJZzBnRDBrTkFDQU5JQkJMRFFBRFFDQU5JUmNnQ0NBSUtBSVFJZzBnQ0NnQ0JHbzJBZ1FnQVNBTmF5RUdJQUVnRFVZTkFpQVJJQkpCQVdvaUVqWUNLQ0FJS0FJc0lnOGdGMm9pRFNBUFR3UkFJQWhCR0dvaENDQUdJUUVnRFNBUVRRMEJDd3NnRVNBR05nSWtDeUFiS0FJRUtBSm9JUUVnRXlBV05nSVlJQk1nSWpZQ0ZDQVRJQmcyQWhBZ0V5QWhOZ0lNSUJNZ0h6WUNDQ0FUSUJBMkFnUWdFeUFQTmdJQUlETkJBVUVDSUFFYlFaM3RBQ0FURUE4Z0FRMEtJQXNvQWh3aEZnd0ZDeUFSSUFZMkFpUUxJQkZCUUdzaEVTQWZRUUZxSWg4Z0owY05BQXNMSUF4QkpHb2hEQ0FZUVFGcUloZ2dLRWNOQUFzTElCY2dHbW9oR2dzQ1FDQUpJQlpCQW5ScUtBSUFSUTBBSUI0b0FoZ2dGa0UwYkdvaUFTZ0NKQTBBSUFFZ0lDZ0NGQ0FXUWN3QWJHb29BaGhCQVdzMkFpUUxJQW9nR21zaENpQWFJQjFxSVIwZ0N4QlhEUUFMQ3lBSkVCQWdDMEh3QVdvaEN5QWpRUUZxSWlNZ0hDZ0NwQU5ORFFBTElBY2dEaEE2SUVBZ0hTQVZhellDQ0VFQkRBSUxJQWNnRGhBNklBa1FFRUVBREFFTElBY2dEaEE2UVFBTElYZ2dFMEh3QUdva0FDQWJFQ3dnZUVVTkFTQVpLQUlnS0FMUUt5RUpJQmtvQWhRb0FnQWlGaWdDRkNFZElFQkJBVFlDREVFQUlRMUJBQ0VWSUJrb0FpQWlBU2dDRENBQktBSUlSZ1JBSUFrb0FoQkJCSFpCQVhFaEZRc0NRQ0FXS0FJUUlqRkZEUUFEUUFKQUlCa29Ba1FpQVFSQUlBRWdEVUVDZEdvb0FnQkZEUUVMSUVCQkRHb2hFMEVBSVRFQ1FDQWRLQUlZSWdGRkRRQWdHU2dDTENFUUEwQWdIU2dDSENBeFFaZ0JiR29pRENnQ0dDSUxCRUFnREVFY2FpRVNJQXdvQWhRaEFTQU1LQUlRSVJkQkFDRU9BMEFnQVNBWGJBUkFJQklnRGtFa2JHb2hEMEVBSVFnRFFDQVpJQjBvQWhBZ01TQVBLQUlRSUE4b0FoUWdDRUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQTVJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNtd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENnTkFBa0FnR1NBZEtBSVFJREVnRHlnQ0VDQUhLQUlZSUFwQkJuUnFJZ1lvQWdnZ0JpZ0NEQ0FHS0FJUUlBWW9BaFFRT1VVRVFDQUdLQUk4SWdGRkRRRWdBUkFRSUFaQkFEWUNQQXdCQ3lBWktBSkFSUVJBSUFZb0Fqd05BU0FHS0FJUUlBWW9BZ2hHRFFFZ0JpZ0NGQ0FHS0FJTVJnMEJDMEVCUVN3UUV5SUJSUVJBSUVCQkFEWUNEQXdLQ3lBWktBSkFJUXNnQVVFQU5nSWtJQUVnRXpZQ0hDQUJJQWsyQWhRZ0FTQWROZ0lRSUFFZ0R6WUNEQ0FCSUFZMkFnZ2dBU0F4TmdJRUlBRWdDellDQUNBQklCVTJBaWdnQVNBek5nSWdJQUVnRUNnQ0JFRUJTallDR0NBUVFRNGdBUkF0SUVBb0FneEZEUWtMSUFwQkFXb2lDaUFIS0FJVUlBY29BaEJzU1EwQUN3d0JDeUFCUlEwQVFRQWhGd05BSUFjb0FoZ2dGMEVHZEdvaUFTZ0NQQ0lHQkVBZ0JoQVFJQUZCQURZQ1BDQUhLQUlRSVFvZ0J5Z0NGQ0VMQ3lBWFFRRnFJaGNnQ2lBTGJFa05BQXNMSUFoQkFXb2lDQ0FNS0FJVUlnRWdEQ2dDRUNJWGJFa05BQXNnRENnQ0dDRUxDeUFPUVFGcUlnNGdDMGtOQUFzZ0hTZ0NHQ0VCQ3lBeFFRRnFJakVnQVVrTkFBc0xJRUFvQWd4RkRRSWdGaWdDRUNFeEN5QUpRYmdJYWlFSklCMUJ6QUJxSVIwZ0RVRUJhaUlOSURGSkRRQUxDMEVBSVRFZ0dTZ0NMQkFnSUVBb0FneEZEUUVDUUNBWktBSkFEUUFnR1NnQ0dDSWRLQUlRUlEwQVFRQWhDUU5BSUJrb0FoUW9BZ0FvQWhRZ0NVSE1BR3hxSWdFb0Fod2dIU2dDR0NBSlFUUnNhaWdDSkVHWUFXeHFJZ2NvQW9nQklRWWdCeWdDa0FFaEN5QUhLQUtNQVNFS0lBY29BcFFCSVFjZ0FTZ0NOQkFRSUFGQkFEWUNOQUpBSUJrb0FrUWlEUVJBSUEwZ0NVRUNkR29vQWdCRkRRRUxJQVlnQzBZTkFDQUhJQXBHRFFBZ0J5QUtheUlIclNBTElBWnJJZ2F0ZmtJZ2lFSUFVZ1JBSUROQkFVR1VGa0VBRUE4TUJRc2dCaUFIYkNJSFFZQ0FnSUFFVHdSQUlETkJBVUdVRmtFQUVBOE1CUXNnQVNBSFFRSjBFQmdpQVRZQ05DQUJEUUFnTTBFQlFaUVdRUUFRRHd3RUN5QUpRUUZxSWdrZ0dTZ0NHQ0lkS0FJUVNRMEFDd3NnR1NnQ0lDRWRJQmtvQWhRb0FnQWlGeWdDRUFSQUlCY29BaFFoQ1NBZEtBTFFLeUVkSUJrb0FoZ29BaGdoRFVFQUlRc0RRQUpBSUJrb0FrUWlBUVJBSUFFZ0MwRUNkR29vQWdCRkRRRUxJQTBvQWlSQkFXb2hBU0FkS0FJVVFRRkdCRUFnQVNFZVFRQWhCa0VBSVF6OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaGdBRWpBRUVnYXlJbEpBQUNRQUpBSUJrb0FrQUVRRUVCSVFjZ0FVRUJSZzBDSUFrb0Fod2lEQ0FKS0FJWVFaZ0JiR29pQVVHUUFXc29BZ0FpRUNBQlFaZ0JheWdDQUNJVFJnMENJQXdvQWdRaEVTQU1LQUlNSVJnZ0RDZ0NBQ0VhSUF3b0FnZ2hHeUFaS0FJc0lnNG9BZ1FoRmlBZVFRRnJJZ29oRlNBTUlRY0NRQ0FLUVFSUEJFQWdDa0VEY1NFVklBY2dDa0Y4Y1NJSVFaZ0JiR29oQjBFQUlRRURRQ0NBQVNBTUlBRkJtQUZzYWlJR1FlZ0VhaUFHUWRBRGFpQUdRYmdDYWlBRy9Ra0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdCa0hnQkdvZ0JrSElBMm9nQmtHd0Ftb2dCdjBKQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQVpCN0FScUlBWkIxQU5xSUFaQnZBSnFJQWI5Q1FLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlUUVhaUFHUWN3RGFpQUdRYlFDYWlBRy9Ra0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGdBRWdBVUVFYWlJQklBaEhEUUFMSUlBQklJQUJJSUFCL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQklvQUJJSUFCSUlBQi9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9ia0IvUnNBSVFZZ0NDQUtSZzBCQ3dOQUlBWWdCeWdDb0FFZ0J5Z0NtQUZySWdFZ0FTQUdTUnNpQVNBSEtBS2tBU0FIS0FLY0FXc2lCaUFCSUFaTEd5RUdJQWRCbUFGcUlRY2dGVUVCYXlJVkRRQUxDMEVBSVFjZ0JrSC8vLzgvU3cwQ0lDVWdCa0VGZENJU0VERWlEellDRUNBUFJRMENJQ1VnRHpZQ0FDQUtCRUFnRUNBVGF5RVFJQmdnRVdzaENDQWJJQnBySVFFRFFDQUpLQUlrSVJNZ0pTQUlJaFUyQWdnZ0pTQUJJZ2MyQWhnZ0RDZ0NuQUVoQmlBTUtBS2tBU0VJSUF3b0FxQUJJUUVnSlNBTUtBS1lBU0lSUVFKdk5nSWNJQ1VnQVNBUmF5SUJJQWRyTmdJVUFrQWdGa0VDU0NJYVJTQUlJQVpySWdoQkFVdHhSUVJBUVFBaEJpQUlSUTBCQTBBZ0pVRVFhaUFUSUFZZ0VHeEJBblJxRUYwZ0JrRUJhaUlHSUFoSERRQUxEQUVMSUFnZ0ZpQUlJQlpKR3lJUlFRRnJJUnNnQ0NBUmJpRVlRUUFoQndOQVFTUVFGQ0lHUlEwRklDWDlBQUlRSVlBQklBWWdFellDR0NBR0lCQTJBaFFnQmlBQk5nSVFJQVlnZ0FIOUN3SUFJQVlnQnlBWWJEWUNIQ0FISUJ0R0lSOGdCaUFJSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FHSUJJUU1TSWZOZ0lBSUI5RkJFQkJBQ0VISUE0UUlDQUdFQkFnRHhBUURBY0xJQTVCQ2lBR0VDMGdCeUFSUncwQUN5QU9FQ0FMSUNVZ0NDQVZhellDQkNBbElBd29BcHdCUVFKdk5nSU1Ba0FnR2tVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQmlBQlFRaFBCRUFEUUNBbElCTWdCa0VDZEdvZ0VFRUlFREFnQnlJR1FRaHFJZ2NnQVUwTkFBc0xJQUVnQmswTkFTQWxJQk1nQmtFQ2RHb2dFQ0FCSUFackVEQU1BUXNnQVNBV0lBRWdGa2tiSWhWQkFXc2hHQ0FCSUJWdUlSRkJBQ0VIQTBCQkpCQVVJZ1pGRFFVZ0pmMEFBZ0FoZ0FFZ0JpQVROZ0lZSUFZZ0VEWUNGQ0FHSUFnMkFoQWdCaUNBQWYwTEFnQWdCaUFISUJGc05nSWNJQWNnR0VZaEdpQUdJQUVnQjBFQmFpSUhJQkZzSUJvYk5nSWdJQVlnRWhBeElobzJBZ0FnR2tVRVFFRUFJUWNnRGhBZ0lBWVFFQ0FQRUJBTUJ3c2dEa0VMSUFZUUxTQUhJQlZIRFFBTElBNFFJQXNnREVHWUFXb2hEQ0FLUVFGcklnb05BQXNMUVFFaEJ5QVBFQkFNQWd0QkFTRUhJQWtvQWh3aUNDQWVRWmdCYkdvaU5VR1lBV3NpWHlnQ0FDQTFRWkFCYXlnQ0FFWU5BU0ExUVpRQmF5SmdLQUlBSURWQmpBRnJLQUlBUmcwQklBZ29BZ1FoRGlBSUtBSU1JUThnQ0NnQ0FDRVdJQWdvQWdnaEVDQUpLQUpFSVNFZ0NTZ0NRQ0VpSUFrb0Fqd2hLQ0FKS0FJNElUQWdDU0FlRUZ3aU9VVUVRRUVBSVFjTUFnc0NRQUpBSUI1QkFVY0VRQUpBQWtBZ0hrRUJheUlLUVFSSkJFQWdDaUVCSUFnaEJ3d0JDeUFLUVFOeElRRWdDQ0FLUVh4eEloVkJtQUZzYWlFSEEwQWdnQUVnQ0NBTVFaZ0JiR29pQmtIb0JHb2dCa0hRQTJvZ0JrRzRBbW9nQnYwSkFxQUIvVllDQUFIOVZnSUFBdjFXQWdBRElBWkI0QVJxSUFaQnlBTnFJQVpCc0FKcUlBYjlDUUtZQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTQUdRZXdFYWlBR1FkUURhaUFHUWJ3Q2FpQUcvUWtDcEFIOVZnSUFBZjFXQWdBQy9WWUNBQU1nQmtIa0JHb2dCa0hNQTJvZ0JrRzBBbW9nQnYwSkFwd0IvVllDQUFIOVZnSUFBdjFXQWdBRC9iRUIvYmtCSVlBQklBeEJCR29pRENBVlJ3MEFDeUNBQVNDQUFTQ0FBZjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNLQUFTQ0FBU0NBQWYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VHSUFvZ0ZVWU5BUXNEUUNBR0lBY29BcUFCSUFjb0FwZ0JheUlLSUFZZ0Nrc2JJZ1lnQnlnQ3BBRWdCeWdDbkFGcklnb2dCaUFLU3hzaEJpQUhRWmdCYWlFSElBRkJBV3NpQVEwQUN3c2dCa0dBZ0lDQUFVOE5BaUFHUVFSMEVERWlGRVVOQWdKQUlCNUZEUUFnRHlBT2F5RVNJQkFnRm1zaEdpQVVRUVJySVRzZ0ZFRUVhaUVrSUJSQkRHb2hLU0FVUVJ4cUlVTWdGRUVZYWlFZklCUkJGR29oSUNBVVFReHJJVVFnRkVFSWFpRXFJQlJCRUdvaE5pQVVRUkJySVRjZ0ZFRUlheUZCSUNHdElZWUJJQ0t0SVljQklDaXRJWW9CSURDdElZc0JRUUVoUmdOQUlBZ29BcHdCSWdGQkFtOGhSeUFJS0FLWUFTSUhRUUp2SVR3Z0NDZ0NwQUVnQVdzaUp5QVNheUVzSUFnb0FxQUJJQWRySWkwZ0dtc2hMaUF3SWd3aEJ5QW9JZ1loQ2lBaUlnRWhPaUFoSWc4aEVRSkFJQWtvQWhRaUZTQkdSZzBBSUJVZ1Jtc2hGVUVBSVFwQkFDRUhJQXdFUUVKL0lCV3RJb2dCaGtKL2hTQ0xBWHdnaUFHSXB5RUhDeUFvQkVCQ2Z5QVZyU0tJQVlaQ2Y0VWdpZ0Y4SUlnQmlLY2hDZ3RCQUNFUFFRQWhBU0FpQkVCQ2Z5QVZyU0tJQVlaQ2Y0VWdod0Y4SUlnQmlLY2hBUXNnSVFSQVFuOGdGYTBpaUFHR1FuK0ZJSVlCZkNDSUFZaW5JUThMUVFBaE9rRUFJUXhCQVNBVlFRRnJkQ0lPSURCSkJFQWdNQ0FPYTYxQ2Z5QVZyU0tJQVlaQ2Y0VjhJSWdCaUtjaERBc2dEaUFpU1FSQUlDSWdEbXV0UW44Z0ZhMGlpQUdHUW4rRmZDQ0lBWWluSVRvTFFRQWhFVUVBSVFZZ0RpQW9TUVJBSUNnZ0RtdXRRbjhnRmEwaWlBR0dRbitGZkNDSUFZaW5JUVlMSUE0Z0lVOE5BQ0FoSUE1cnJVSi9JQld0SW9nQmhrSi9oWHdnaUFHSXB5RVJDMEYvSURvZ0NDZ0N0QUVpRldzaURrRUFJQTRnT2swYklnNUJBbW9pRmlBT0lCWkxHeUlPSUM0Z0RpQXVTUnNpTkVGL0lBRWdDQ2dDMkFFaUUyc2lEa0VBSUFFZ0RrOGJJZ0ZCQW1vaURpQUJJQTVMR3lJQklCb2dBU0FhU1JzaUppQThHMEVCZENJQklDWWdOQ0E4RzBFQmRFRUJjaUlPSUFFZ0Rrc2JJa2dnTFVraEdDQU1JQlZySWdGQkFDQUJJQXhOR3lJQlFRSnJJZ3hCQUNBQklBeFBHeUlRSUFjZ0Uyc2lBVUVBSUFFZ0IwMGJJZ0ZCQW1zaURFRUFJQUVnREU4YkloWWdQQnRCQVhRaURDQVdJQkFnUEJ0QkFYUkJBWElpSzBraEx5QUtJQWdvQXJnQklodHJJaFZCQUNBS0lCVlBHeUlLUVFKckloVkJBQ0FLSUJWUEd5SVZJU01nQmlBSUtBTGNBU0lLYXlJT1FRQWdCaUFPVHhzaUJrRUNheUlPUVFBZ0JpQU9UeHNpRGlFOVFYOGdEeUFiYXlJR1FRQWdCaUFQVFJzaUJrRUNhaUlQSUFZZ0Qwc2JJZ1lnRWlBR0lCSkpHeUliSVQ1QmZ5QVJJQXBySWdaQkFDQUdJQkZOR3lJR1FRSnFJZ29nQmlBS1N4c2lCaUFzSUFZZ0xFa2JJaHdoUHlCSEJFQWdGU0U5SUJ3aFBpQWJJVDhnRGlFakN5QklJQzBnR0JzaFNTQU1JQ3NnTHhzaEdDQVNJQnhxSVZBZ0RpQVNhaUZSSUNjRVFDQVVJQlpCQTNRaUJtb2lSVUVFYWlBN0lDNUJBM1FpQ21vaVVpQVdJQzVJSWd3YklWTWdCaUFrYWlJR0lDWWdMaUFtSUM1SUd5SVBJQWNnRXlBSElCTkpHMEVDSUFFZ0FVRUNUeHRxSWdGcUloTWdCMnRCQW1zaUVVRURkQ0lyYWlBR1NTQXBJQWNnQVd0QkEzUnFJZ0VnSzJvZ0FVbHlJQkZCLy8vLy93RkxjaUZVSURRZ0drRUJheUFhSURSS0d5RXZRUUFoRVNBYVFRRktJQzVCQUVweUlWVWdKQ0E4UVFKMElnRnJJQkJCQTNScUlWWWdBU0JGYWlGWElCWWdCMEYvY3lBVGFpSktRWHh4SWpKcUlUZ2dGa0VCYWlJVElESnFJVUlnR2lBMGFpRllJQkFnR21vaFdTQVcvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaGd3RWdGQ0FZUVFKMGFpRmFJRUVnR2tFRGRDSUJhaUZMSUFFZ08yb2hUQ0FLSUVGcUlVMGdHa1VnTGtFQlJuRWhXeUFVSUVsQkFuUWlBV29oWENBQklEdHFJVjBnRS8wUi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQS9hNEJJWVFCSURzZ0ZpQXVJQXdiUVFOMGFpRmVBMEFDUUFKQUlCRWdHMGtnRVNBVlQzRU5BQ0FSSUZCSklCRWdVVTl4RFFBZ0VVRUJhaUVyREFFTElDMGdTRXNFUUNCZFFRQTJBZ0FnWEVFQU5nSUFDeUE1SUJZZ0VTQW1JQkZCQVdvaUt5QlhRUUpCQUJBZUlEa2dXU0FSSUZnZ0t5QldRUUpCQUJBZUFrQUNRQUpBSUR4RkJFQWdWVVVOQXlBV0lDWk9EUUlDUUFKQUlCWkJBRW9FUUNCZUtBSUFJUWNNQVFzZ0pDZ0NBQ0lISVFFZ0ZrRUFTQTBCQ3lBSElRRWdVeWdDQUNFSEN5QkZJRVVvQWdBZ0FTQUhha0VDYWtFQ2RXczJBZ0FnRXlJSElBOU9EUUZCQUNFSElJUUJJWUFCSUlNQklZSUJJQk1oQVNBV0lRb2dTa0VVU1NCVWNrVUVRQU5BSUJRZ2dBRkJBZjJyQVNLQkFmMGJBRUVDZEdvaUFTQVVJSUVCL1JzRFFRSjBhaUlHSUJRZ2dRSDlHd0pCQW5ScUlnb2dGQ0NCQWYwYkFVRUNkR29pRENBQi9Ra0NBUDFXQWdBQi9WWUNBQUw5VmdJQUF5QVVJSUlCUVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0tGQWYwYkEwRUNkR29nRkNDRkFmMGJBa0VDZEdvZ0ZDQ0ZBZjBiQVVFQ2RHb2dGQ0NGQWYwYkFFRUNkR3I5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJRZ2dRSDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0tCQWYwYkEwRUNkR29nRkNDQkFmMGJBa0VDZEdvZ0ZDQ0JBZjBiQVVFQ2RHb2dGQ0NCQWYwYkFFRUNkR3I5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlnUUg5V2dJQUFDQU1JSUVCL1ZvQ0FBRWdDaUNCQWYxYUFnQUNJQVlnZ1FIOVdnSUFBeUNDQWYwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTR0NBU0NBQWYwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTR0FBU0FIUVFScUlnY2dNa2NOQUFzZ1FpRUJJRGdoQ2lBUElRY2dNaUJLUmcwQ0N3TkFJQlFnQVVFRGRHb2lCeUFIS0FJQUlCUWdDa0VEZEdvb0FnUWdCeWdDQkdwQkFtcEJBblZyTmdJQUlBRWlDa0VCYWlJQklBOUhEUUFMSUE4aEJ3d0JDd0pBSUZ0RkJFQWdGaUlISUNaT0RRRURRQ0FVSUFkQkEzUnFJZ0VvQWdRaEJpQUJJQVlDZndKQUlBZEJBRTRFUUNBQklFMGdCeUF1U0Jzb0FnQWhPaUFIUVFGcUlRRU1BUXNnRkNnQ0FDRTZRUUFoQVNBVUlBZEJBV29pQncwQkdnc2dBU0F1VGdSQUlBRWhCeUJOREFFTElCUWdBU0lIUVFOMGFnc29BZ0FnT21wQkFtcEJBblZyTmdJRUlBY2dKa2dOQUFzTUFRc2dGQ0FVS0FJQVFRSnROZ0lBREFNTElCQWlCeUEwVGcwQ0EwQWdGQ0FIUVFOMGFpSUJLQUlBSVFvQ2Z5QUhRUUJJQkVBZ0pDZ0NBQ0VHSUNRTUFRc2dGQ0FIUVFOMGFrRUVhaUJNSUFjZ0drZ2JLQUlBSVFZZ0pDQUhSUTBBR2lCTUlBRkJCR3NnQnlBYVNoc0xJUXdnQVNBTUtBSUFJQVpxUVFGMUlBcHFOZ0lBSUFkQkFXb2lCeUEwUncwQUN3d0NDeUFISUNaT0RRQURRQ0FVSUFkQkEzUnFJZ0VnQVNnQ0FBSi9Ba0FnQjBFQVNnUkFJRHNnQnlBdUlBY2dMa2diUVFOMGFpZ0NBQ0VLREFFTElDUW9BZ0FoQ2lBa0lBZEJBRWdOQVJvTElGSWdCeUF1VGcwQUdpQVVJQWRCQTNScVFRUnFDeWdDQUNBS2FrRUNha0VDZFdzMkFnQWdCMEVCYWlJSElDWkhEUUFMQ3lBUUlEUk9EUUFnTHlBUUlnRWlCMG9FUUFOQUlCUWdCMEVEZEdvaUFTQUJLQUlFSUJRZ0IwRUJhaUlIUVFOMGFpZ0NBQ0FCS0FJQWFrRUJkV28yQWdRZ0J5QXZSdzBBQ3lBdklRRUxJQUVnTkU0TkFBTkFBbjhDUUNBQklnZEJBRTRFUUNBVUlBRkJBM1JxSUVzZ0FTQWFTQnNvQWdBaERDQUJRUUZxSVFvTUFRc2dGQ2dDQUNFTVFRQWhDaUFVSUFkQkFXb2lBUTBCR2dzZ0NpQWFUZ1JBSUFvaEFTQkxEQUVMSUJRZ0NpSUJRUU4wYWdzaEJpQVVJQWRCQTNScUlnY2dCeWdDQkNBR0tBSUFJQXhxUVFGMWFqWUNCQ0FCSURSSURRQUxDeUE1SUJnZ0VTQkpJQ3NnV2tFQlFRQkJBQkFtUlEwR0N5QXJJaEVnSjBjTkFBc0xJQWhCbUFGcUlRZ2dQa0VCZENJQklEOUJBWFJCQVhJaUJ5QUJJQWRMR3lJQklDY2dBU0FuU1JzaFNDQkRJQlZCQlhRaUFXb2dPeUFzUVFWMElnZHFJQlVnTEVnaUJoc2hTaUFCSUI5cUlBY2dRV29nQmhzaFN5QUJJQ0JxSUFjZ1JHb2dCaHNoVENBQklEWnFJQWNnTjJvZ0Joc2hUU0FjSUJKQkFXc2dFaUFjU2hzaERDQXNRUUJLSWc4Z0VrRUJTbkloVWlBQklCUnFJaXNnUjBFRWRHb2hVeUFwSUJKQkEzUWlHa0VJYXlJK1FRQWdFa0VBVEJ0QkFuUWlDbW9oVkNBS0lDcHFJVlVnQ2lBa2FpRldJQW9nRkdvaFZ5QXBRUUFnTEVFRGRDSUtRUWhySWo4Z0R4dEJBblFpRDJvaFdDQVBJQ3BxSVZrZ0R5QWthaUZhSUE4Z0ZHb2hXeUFVUVFRZ1IwRUNkR3RCQW5ScUlBNUJCWFJxSVZ3Z0d5QXNJQnNnTEVnYklROGdGVUVCYWlFUUlCUWdJMEVCZENJV0lEMUJBWFJCQVhJaUV5QVRJQlpMR3lKZFFRUjBhaUZlSUFFZ0tXb2hQU0FCSUNwcUlTTWdBU0FrYWlFdklCcEJBV3NoT0NBYVFRSnJJVUlnR2tFRGF5RXVJQlFnRWtFRmRHb2hZU0FhUVFScklUUWdDa0VGYXlGaUlBcEJCbXNoWXlBS1FRZHJJV1FnRWtVZ0xFRUJSbkVoWlNBcElBZEJFR3NpQVdvaEppQUJJQ3BxSVRvZ0FTQWthaUU4SUFFZ0ZHb2hSU0FwSUQ1QkFuUWlBV29oYUNBQklDcHFJV2tnQVNBa2FpRnFJQUVnRkdvaGF5QTdJQlVnTENBR0cwRUZkQ0lCYWlGc0lBRWdRV29oRXlBQklFUnFJUkVnQVNBM2FpRnRJQ2tnUDBFQ2RDSUJhaUZ1SUFFZ0ttb2hieUFCSUNScUlYQWdBU0FVYWlGeEEwQUNRQUpBQW44Q1FDQVlJaFlnU1VrRVFDQTVJQllnRlVFRUlFa2dGbXNpQVNBQlFRUlBHeUFXYWlJWUlCc2dVMEVCUVFnUUhpQTVJQllnVVNBWUlGQWdYRUVCUVFnUUhpQkhSUVJBSUZKRkRRVWdGU0FiVGcwRUFuOGdGVUVBU2dSQUlHMG9BZ0FoQnlBVElRWWdFU0VLSUd3TUFRc2dOaWdDQUNFSElCVkJBRWdOQXlBZklRWWdJQ0VLSUVNTElYa2dLeUFyS0FJQUlBY2dUU2dDQUdwQkFtcEJBblZyTmdJQUlDOGdMeWdDQUNBS0tBSUFJRXdvQWdCcVFRSnFRUUoxYXpZQ0FDQWpJQ01vQWdBZ0JpZ0NBQ0JMS0FJQWFrRUNha0VDZFdzMkFnQWdTaWdDQUNFSElIa29BZ0FNQXdzZ1pRUkFJQlFnRkNnQ0FFRUNiVFlDQUNBa0lDUW9BZ0JCQW0wMkFnQWdLaUFxS0FJQVFRSnROZ0lBSUNrZ0tTZ0NBRUVDYlRZQ0FBd0ZDeUFiSUJVaUIwb0VRQU5BSUFkQkEzUWhBUUovQWtBZ0IwRUFTQVJBSUFkQmYwWU5BU0FVSUFGQkFuUnFJZ0VnQVNnQ0VDQVVLQUlBUVFGMFFRSnFRUUoxYXpZQ0VDQUJJQUVvQWhRZ0pDZ0NBRUVCZEVFQ2FrRUNkV3MyQWhRZ0FTQUJLQUlZSUNvb0FnQkJBWFJCQW1wQkFuVnJOZ0lZSUNrb0FnQkJBWFJCQW1vaEJpQUJRUnhxREFJTElDd2dCMEVCYWlJR1RBUkFJQlFnQVVFQ2RHb2lDaUFLS0FJUUlCUWdBU0EvSUFjZ0xFZ2lCaHRCQW5ScUtBSUFJSEVvQWdCcVFRSnFRUUoxYXpZQ0VDQUtJQW9vQWhRZ0ZDQUJRUUZ5SUdRZ0JodEJBblJxS0FJQUlIQW9BZ0JxUVFKcVFRSjFhellDRkNBS0lBb29BaGdnRkNBQlFRSnlJR01nQmh0QkFuUnFLQUlBSUc4b0FnQnFRUUpxUVFKMWF6WUNHQ0FVSUFGQkEzSWdZaUFHRzBFQ2RHb29BZ0FnYmlnQ0FHcEJBbW9oQmlBS1FSeHFEQUlMSUJRZ0FVRUNkR29pQVNBQktBSVFJQUVvQWdBZ0ZDQUdRUVYwYWlJR0tBSUFha0VDYWtFQ2RXczJBaEFnQVNBQktBSVVJQUVvQWdRZ0JpZ0NCR3BCQW1wQkFuVnJOZ0lVSUFFZ0FTZ0NHQ0FCS0FJSUlBWW9BZ2hxUVFKcVFRSjFhellDR0NBQktBSU1JQVlvQWd4cVFRSnFJUVlnQVVFY2Fnd0JDeUEzSURjb0FnQWdGQ2dDQUNCYktBSUFha0VDYWtFQ2RXczJBZ0FnUkNCRUtBSUFJQ1FvQWdBZ1dpZ0NBR3BCQW1wQkFuVnJOZ0lBSUVFZ1FTZ0NBQ0FxS0FJQUlGa29BZ0JxUVFKcVFRSjFhellDQUNBcEtBSUFJRmdvQWdCcVFRSnFJUVlnT3dzaUFTQUJLQUlBSUFaQkFuVnJOZ0lBSUFkQkFXb2lCeUFiUncwQUN3c2dIQ0FPSWdkTURRUURRQ0FIUVFOMElRRUNmeUFIUVFCSUJFQWdGQ0FCUVFKMGFpSUJJQUVvQWdBZ05pZ0NBRUVCZEVFQmRXbzJBZ0FnQVNBQktBSUVJQlFvQWhSQkFYUkJBWFZxTmdJRUlBRWdBU2dDQ0NBVUtBSVlRUUYwUVFGMWFqWUNDQ0FVS0FJY1FRRjBJUW9nQVVFTWFnd0JDeUFIQkVBZ0ZDQUJRUUowYWlJR0lBWW9BZ0FnWVNBR0lBY2dFa29pTWh0QkVHc29BZ0FnRkNBQlFRUnlJRFFnQnlBU1NDSUtHMEVDZEdvb0FnQnFRUUYxYWpZQ0FDQUdJQVlvQWdRZ1JDQWFJQUVnTWh0QkFuUWlNbW9vQWdBZ0ZDQUJRUVZ5SUM0Z0NodEJBblJxS0FJQWFrRUJkV28yQWdRZ0JpQUdLQUlJSURJZ1FXb29BZ0FnRkNBQlFRWnlJRUlnQ2h0QkFuUnFLQUlBYWtFQmRXbzJBZ2dnTWlBN2FpZ0NBQ0FVSUFGQkIzSWdPQ0FLRzBFQ2RHb29BZ0JxSVFvZ0JrRU1hZ3dCQ3lBVUlCUW9BZ0FnTmlnQ0FDQVVRUVFnTkNBSElCSklJZ0ViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQ1FnSkNnQ0FDQVVLQUlVSUJSQkJTQXVJQUViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQ29nS2lnQ0FDQVVLQUlZSUJSQkJpQkNJQUViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQlFvQWh3Z0ZFRUhJRGdnQVJ0QkFuUnFLQUlBYWlFS0lDa0xJZ0VnQVNnQ0FDQUtRUUYxYWpZQ0FDQUhRUUZxSWdjZ0hFY05BQXNNQkFzZ0xTRWFJQ2NoRWlCR1FRRnFJa1lnSGtjTkJRd0dDeUFySUNzb0FnQWdCMEVCZEVFQ2FrRUNkV3MyQWdBZ0x5QXZLQUlBSUNBb0FnQkJBWFJCQW1wQkFuVnJOZ0lBSUNNZ0l5Z0NBQ0FmS0FJQVFRRjBRUUpxUVFKMWF6WUNBQ0JES0FJQUlnY0xJUUVnUFNBOUtBSUFJQUVnQjJwQkFtcEJBblZyTmdJQUlCVWhCaUFRSWdFaUJ5QVBTQVJBQTBBZ0ZDQUJRUVYwYWlJSElBZjlBQUlBSURZZ0JrRUZkR3I5QUFJQUlBZjlBQUlRL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRSDlDd0lBSUFFaUJrRUJhaUlCSUE5SERRQUxJQThoQndzZ0J5QWJUZzBBQTBBZ0IwRURkQ0VCSUFjZ0xFZ2hCZ0pBSUFkQkFFd0VRQ0EyS0FJQUlRb2dCMEVBVGdSQUlCUWdBVUVDZENJQmFpSXlJRElvQWdBZ0NpQUJJRFpxSUVVZ0Joc29BZ0JxUVFKcVFRSjFhellDQUNBQklDUnFJZ29nQ2lnQ0FDQWdLQUlBSUFFZ0lHb2dQQ0FHR3lnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS21vaUNpQUtLQUlBSUI4b0FnQWdBU0FmYWlBNklBWWJLQUlBYWtFQ2FrRUNkV3MyQWdBZ1F5Z0NBQ0FCSUVOcUlDWWdCaHNvQWdCcVFRSnFJUVlnQVNBcGFpRUJEQUlMSUJRZ0FVRUNkQ0lCYWlJR0lBWW9BZ0FnQ2tFQmRFRUNha0VDZFdzMkFnQWdBU0FrYWlJR0lBWW9BZ0FnRkNnQ0ZFRUJkRUVDYWtFQ2RXczJBZ0FnQVNBcWFpSUdJQVlvQWdBZ0ZDZ0NHRUVCZEVFQ2FrRUNkV3MyQWdBZ0FTQXBhaUVCSUJRb0FoeEJBWFJCQW1vaEJnd0JDeUFVSUFjZ0xDQUdHMEVEZEVFRWEwRUNkQ0lLYWlnQ0FDRXlJQVpGQkVBZ0ZDQUJRUUowSWdGcUlnWWdCaWdDQUNBeUlFVW9BZ0JxUVFKcVFRSjFhellDQUNBQklDUnFJZ1lnQmlnQ0FDQUtJQ1JxS0FJQUlEd29BZ0JxUVFKcVFRSjFhellDQUNBQklDcHFJZ1lnQmlnQ0FDQUtJQ3BxS0FJQUlEb29BZ0JxUVFKcVFRSjFhellDQUNBQklDbHFJUUVnQ2lBcGFpZ0NBQ0FtS0FJQWFrRUNhaUVHREFFTElCUWdBVUVDZENJQmFpSUdJQVlvQWdBZ01pQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0FTQWthaUlHSUFZb0FnQWdDaUFrYWlnQ0FDQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0FTQXFhaUlHSUFZb0FnQWdDaUFxYWlnQ0FDQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0NpQXBhaWdDQUNBQklDbHFJZ0VvQWhCcVFRSnFJUVlMSUFFZ0FTZ0NBQ0FHUVFKMWF6WUNBQ0FIUVFGcUlnY2dHMGNOQUFzTElBNGdIRTROQUNBTUlBNGlBU0lIU2dSQUEwQWdGQ0FCUVFWMGFpSUhJQWY5QUFJZ0lBZjlBQUlBL2E0QlFRSDlyQUVnQi8wQUFoRDlyZ0g5Q3dJUUlBRkJBV29pQVNBTVJ3MEFDeUFNSVFjTElBY2dIRTROQUFOQUlFTWdCMEVEZENJQlFRSjBhaUl5QW44Z0IwRUFTQVJBSUJRb0FnQWhCaUFIUVg5SEJFQWdOaUFCUVFKMElnRnFJZ29nQ2lnQ0FDQUdhallDQUNBQklDQnFJZ1lnQmlnQ0FDQWtLQUlBYWpZQ0FDQUJJQjlxSWdFZ0FTZ0NBQ0FxS0FJQWFqWUNBQ0FwS0FJQURBSUxJRFlnQVVFQ2RDSUJhaUlLSUFvb0FnQWdWeWdDQUNBR2FrRUJkV28yQWdBZ0FTQWdhaUlHSUFZb0FnQWdWaWdDQUNBa0tBSUFha0VCZFdvMkFnQWdBU0FmYWlJQklBRW9BZ0FnVlNnQ0FDQXFLQUlBYWtFQmRXbzJBZ0FnVkNnQ0FDQXBLQUlBYWtFQmRRd0JDeUFCSUQ0Z0J5QVNTQnNoQmlBU0lBZEJBV29pWmt3RVFDQTJJQUZCQW5RaUNtb2lBU0FCS0FJQUlHc29BZ0FnRkNBR1FRSjBhaUlCS0FJQWFrRUJkV28yQWdBZ0NpQWdhaUlHSUFZb0FnQWdhaWdDQUNBQktBSUVha0VCZFdvMkFnQWdDaUFmYWlJR0lBWW9BZ0FnYVNnQ0FDQUJLQUlJYWtFQmRXbzJBZ0FnYUNnQ0FDQUJLQUlNYWtFQmRRd0JDeUEySUFGQkFuUWlDbW9pQVNBQktBSUFJQlFnWmtFRmRHb2lBU2dDQUNBVUlBWkJBblJxSWdZb0FnQnFRUUYxYWpZQ0FDQUtJQ0JxSW1ZZ1ppZ0NBQ0FCS0FJRUlBWW9BZ1JxUVFGMWFqWUNBQ0FLSUI5cUlnb2dDaWdDQUNBQktBSUlJQVlvQWdocVFRRjFhallDQUNBQktBSU1JQVlvQWd4cVFRRjFDeUF5S0FJQWFqWUNBQ0FIUVFGcUlnY2dIRWNOQUFzTElEa2dGaUJkSUJnZ1NDQmVRUUZCQkVFQUVDWU5BQXNMREFJTElCUVFFRUVCSVFjTElEa2dOVUVRYXlnQ0FDSUJJRjhvQWdBaUJtc2dOVUVNYXlnQ0FDQmdLQUlBSWdwcklEVkJDR3NvQWdBaUNDQUdheUExUVFScktBSUFJQXBySUFrb0FqUkJBU0FJSUFGckVCNGdPUkFqREFNTElEa1FJeUFVRUJCQkFDRUhEQUlMSURrUUkwRUFJUWNNQVF0QkFDRUhJQTRRSUNBUEVCQUxJQ1ZCSUdva0FDQUhEUUVNQlFzZ0FTRUlRUUFoRHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNHQUFTTUFRVUJxSWh3a0FBSkFBbjhDUUNBWktBSkFCRUFnQ1NnQ0hDSVZJQWtvQWhoQm1BRnNhaUlCUVpnQmF5Z0NBQ0VhSUFGQmtBRnJLQUlBSVJzZ0ZTZ0NCQ0VNSUJVb0Fnd2hlaUFWS0FJQUlSQWdGU2dDQ0NFVFFRRWhCeUFaS0FJc0loOG9BZ1FoS3lBSVFRRkdEUU5CQUNFR0lBaEJBV3NpRmlFSUlCVWhBUUpBSUJaQkJFOEVRQ0FXUVFOeElRZ2dBU0FXUVh4eElncEJtQUZzYWlFQlFRQWhCd05BSUlBQklCVWdCMEdZQVd4cUlnWkI2QVJxSUFaQjBBTnFJQVpCdUFKcUlBYjlDUUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFHUWVBRWFpQUdRY2dEYWlBR1FiQUNhaUFHL1FrQ21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQmtIc0JHb2dCa0hVQTJvZ0JrRzhBbW9nQnYwSkFxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBWkI1QVJxSUFaQnpBTnFJQVpCdEFKcUlBYjlDUUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTR0FBU0FIUVFScUlnY2dDa2NOQUFzZ2dBRWdnQUVnZ0FIOURRZ0pDZ3NNRFE0UEFBRUNBd0FCQWdQOXVRRWlnQUVnZ0FFZ2dBSDlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaEJpQUtJQlpHRFFFTEEwQWdCaUFCS0FLZ0FTQUJLQUtZQVdzaUJ5QUdJQWRMR3lJSElBRW9BcVFCSUFFb0Fwd0JheUlHSUFZZ0Iwa2JJUVlnQVVHWUFXb2hBU0FJUVFGcklnZ05BQXNMUVFBaEJ5QUdRZi8vL3o5TERRTWdIQ0FHUVFWMElrWVFHQ0lCTmdJZ0lBRkZEUU1nSENBQk5nSUFJQlpGQkVCQkFTRUhJQUVRRUF3RUN5QjZJQXhySVE4Z0V5QVFheUVPUVFJZ0swRUJkaUlCSUFGQkFrMGJJVWNnQ1NnQ0pDSUtJQnRCSEd3aVRTQWFRUnhzSWw5cmFpRXZJQW9nRzBFWWJDSmdJQnBCR0d3aVVtdHFJVDBnQ2lBYlFSUnNJbE1nR2tFVWJDSlVhMm9oUGlBS0lCdEJCSFFpVlNBYVFRUjBJbFpyYWlFL0lBb2dHMEVNYkNKWElCcEJER3dpV0d0cUlUZ2dHeUFhYXlJUVFRZHNJVWtnRUVFR2JDRkZJQkJCQld3aE1pQVFRUU5zSVVnZ0VFRUJkQ0ZRSUFvZ0VFRURkQ0pSYWlGQ0lBb2dFRUVDZENKQmFpRVVJQkJCQlhRaFdTQVEvUkVoaEFFRFFDQWNJQTgyQWdnZ0hDQU9JZ0UyQWlnZ0ZTZ0NuQUVoSkNBVktBS2tBU0VwSUJVb0FxQUJJUjRnRlNnQ21BRWhJQ0FjUVFBMkFqZ2dIQ0FCTmdJMElCeEJBRFlDTUNBY0lDQkJBbThpR0RZQ0xDQWNJQjRnSUdzaURpQUJheUlUTmdJOElCd2dFellDSkFKQUlDdEJBa2dpV2tVZ0tTQWtheUlQUVE5TGNVVUVRRUVBSVFjZ0NpRUdJQTlCQ0VrTkFTQS9JQVlnVXlBZVFRSjBJZ0ZxSUZRZ0lFRUNkQ0lJYW10cUlqcEpJRDRnQmlBQklGVnFJQWdnVm1wcmFpSkRTWEVnUFNCRFNTQS9JQVlnQVNCZ2FpQUlJRkpxYTJvaVBFbHhjaUF2SUVOSklEOGdCaUFCSUUxcUlBZ2dYMnByYWlKRVNYRnlJVnNnUFNCRVNTQXZJRHhKY1NGY0lENGdSRWtnTHlBNlNYRWhYU0E4SUQ1TElEb2dQVXR4SVY0Z1FpQUdJQUVnVjJvZ0NDQllhbXRxSWtwSklEZ2dCaUFCSUZGcUlBaHJhaUpMU1hFaFlTQVVJRXBKSURnZ0JpQWJJQjVxSUJvZ0lHcHJRUUowYWlKTVNYRWhZaUFVSUV0SklFSWdURWx4SVdNZ0JpQUJJQWhyYWlFcUlBNUJmSEVoQ0NBY0tBSWdJaE1nRGtFRmRHb2lFVUVRYXlFbElCRkJGR3NoTENBUlFSaHJJUzRnRVVFY2F5RTJJQkZCQkdzaE9TQVJRUWhySVRzZ0VVRU1heUUwUVFBaEdDQVRRUXhxSWlNZ0hpQWdRWDl6YWlJTVFRVjBJZ0ZxSUNOSklBeEIvLy8vUDBzaURDQVRRUVJxSWlFZ0FXb2dJVWtnQVNBVGFpQVRTWEp5SUJOQkNHb2lJaUFCYWlBaVNYSnlJQTVCeUFKSmNpRmtJQk5CRkdvaUtDQUJhaUFvU1NBVFFSQnFJaWNnQVdvZ0owbHlJQXh5SUJOQkdHb2lNQ0FCYWlBd1NYSWdFMEVjYWlJdElBRnFJQzFKY2lBT1FkUUFTWEloWlFOQUlBY2hEQ0FjUVNCcUlnRWdCaUFRUVFnUU95QUJFQ0lDUUNBT1JRMEFJQmdnV1d3aEIwRUFJUUVDUUFKQUlHUU5BQ0JoSUFZZ05ra2dFeUFISUNwcUlqZEpjU0FHSUFjZ1Ntb2lFa2tnS2lBNFMzRWdGQ0FxU1NBR0lBY2dUR29pSmtseElBWWdCeUJMYWlJMVNTQXFJRUpMY1hKeWNpQUdJQzVKSUNFZ04wbHhjaUFHSUN4SklDSWdOMGx4Y2lBR0lDVkpJQ01nTjBseGNpQmpjaUJpY2lBVElDWkpJQWNnRkdvaU55QTJTWEZ5SUNFZ0pra2dMaUEzUzNGeUlDSWdKa2tnTENBM1MzRnlJQ01nSmtrZ0pTQTNTM0Z5Y2cwQUlCTWdOVWtnQnlCQ2FpSW1JRFpKY1EwQUlDRWdOVWtnSmlBdVNYRU5BQ0FpSURWSklDWWdMRWx4RFFBZ0l5QTFTU0FsSUNaTGNRMEFJQWNnT0dvaUppQTJTU0FTSUJOTGNRMEFJQ1lnTGtrZ0VpQWhTM0VOQUNBbUlDeEpJQklnSWt0eERRQWdFaUFqU3lBbElDWkxjUTBBQTBBZ0JpQUJRUUowYWlBVElBRkJCWFJxSWhMOUNRSUFJQklxQWlEOUlBRWdFa0ZBYXlvQ0FQMGdBaUFTS2dKZy9TQUQvUXNDQUNBR0lBRWdFR3BCQW5ScUlCTDlDUUlFSUJJcUFpVDlJQUVnRWlvQ1JQMGdBaUFTS2dKay9TQUQvUXNDQUNBR0lBRWdVR3BCQW5ScUlCTDlDUUlJSUJJcUFpajlJQUVnRWlvQ1NQMGdBaUFTS2dKby9TQUQvUXNDQUNBR0lBRWdTR3BCQW5ScUlCTDlDUUlNSUJJcUFpejlJQUVnRWlvQ1RQMGdBaUFTS2dKcy9TQUQvUXNDQUNBQlFRUnFJZ0VnQ0VjTkFBc2dDQ0lCSUE1R0RRRUxBMEFnQmlBQlFRSjBhaUFUSUFGQkJYUnFJaElxQWdBNEFnQWdCaUFCSUJCcVFRSjBhaUFTS2dJRU9BSUFJQVlnQVNCUWFrRUNkR29nRWlvQ0NEZ0NBQ0FHSUFFZ1NHcEJBblJxSUJJcUFndzRBZ0FnQVVFQmFpSUJJQTVIRFFBTEMwRUFJUUVDUUNCbERRQWdYQ0FISUQ1cUloSWdORWtnSnlBSElEcHFJaVpKY1NCYklBY2dQMm9pTlNBMFNTQW5JQWNnUTJvaU4wbHhjaUFvSURkSklEVWdPMGx4Y2lBd0lEZEpJRFVnT1VseGNpQXRJRGRKSUJFZ05VdHhjaUJlY2lCZGNuSWdFaUE3U1NBbUlDaExjWElnRWlBNVNTQW1JREJMY1hJZ0ppQXRTeUFSSUJKTGNYSnlEUUFnQnlBOWFpSVNJRFJKSUNjZ0J5QThhaUltU1hFTkFDQVNJRHRKSUNZZ0tFdHhEUUFnRWlBNVNTQW1JREJMY1EwQUlDWWdMVXNnRVNBU1MzRU5BQ0FISUM5cUloSWdORWtnSnlBSElFUnFJZ2RKY1EwQUlCSWdPMGtnQnlBb1MzRU5BQ0FTSURsSklBY2dNRXR4RFFBZ0J5QXRTeUFSSUJKTGNRMEFBMEFnQmlBQklFRnFRUUowYWlBVElBRkJCWFJxSWdmOUNRSVFJQWNxQWpEOUlBRWdCeW9DVVAwZ0FpQUhLZ0p3L1NBRC9Rc0NBQ0FHSUFFZ01tcEJBblJxSUFmOUNRSVVJQWNxQWpUOUlBRWdCeW9DVlAwZ0FpQUhLZ0owL1NBRC9Rc0NBQ0FHSUFFZ1JXcEJBblJxSUFmOUNRSVlJQWNxQWpqOUlBRWdCeW9DV1AwZ0FpQUhLZ0o0L1NBRC9Rc0NBQ0FHSUFFZ1NXcEJBblJxSUFmOUNRSWNJQWNxQWp6OUlBRWdCeW9DWFAwZ0FpQUhLZ0o4L1NBRC9Rc0NBQ0FCUVFScUlnRWdDRWNOQUFzZ0NDSUJJQTVHRFFFTEEwQWdCaUFCSUVGcVFRSjBhaUFUSUFGQkJYUnFJZ2NxQWhBNEFnQWdCaUFCSURKcVFRSjBhaUFIS2dJVU9BSUFJQVlnQVNCRmFrRUNkR29nQnlvQ0dEZ0NBQ0FHSUFFZ1NXcEJBblJxSUFjcUFodzRBZ0FnQVVFQmFpSUJJQTVIRFFBTEN5QVlRUUZxSVJnZ0RFRUlhaUVISUFZZ1VVRUNkR29oQmlBTVFROXFJQTlKRFFBTERBRUxJQThnRDBFRGRpSUhJQ3NnQnlBclNSc2lFbTVCZUhFaEVTQVBRWGh4SVFkQkFDRUlJQW9oQmdOQVFUQVFGQ0lNUlEwRUlBd2dSaEFZSWlNMkFnQWdJMFVFUUNBZkVDQWdEQkFRUVFBTUJnc2dEQ0FHTmdJb0lBd2dFRFlDSkNBTUlBNDJBaUFnRENBVE5nSWNJQXhCQURZQ0dDQU1JQUUyQWhRZ0RFRUFOZ0lRSUF3Z0dEWUNEQ0FNSUFFMkFnZ2dEQ0FUTmdJRUlBd2dCeUFJSUJGc2F5QVJJQWhCQVdvaUNDQVNSaHNpSXpZQ0xDQWZRUXdnREJBdElBWWdFQ0FqYkVFQ2RHb2hCaUFJSUJKSERRQUxJQjhRSUFzQ1FDQUhJQTlQRFFBZ0hFRWdhaUlCSUFZZ0VDQVBJQWRySWhnUU95QUJFQ0lnRGtVTkFDQWNLQUlnSWlNZ0hrRUZkRUVCSUJnZ0dFRUJUUnNpRWtFQ2RHb2dJRUVGZEd0cVFTQnJJUjRnRWtFRGNTRWdJQkpCZkhFaERDQkJJQkpCQVd0c0lTRkJBQ0VJQTBBZ0l5QUlRUVYwYWlFVFFRQWhCd0pBQWtBZ0dFRUVTUTBBSUI0Z0JpQUlRUUowSWhGcUlnRWdCaUFSSUNGcWFpSVJJQUVnRVVrYlN3UkFJQ01nQVNBUklBRWdFVXNiUVFScVNRMEJDeUFJL1JFaGdRSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBQWhnQUZCQUNFQkEwQWdCaUNBQVNDRUFmMjFBU0NCQWYydUFTS0NBZjBiQUVFQ2RHb2dFeUFCUVFKMGF2MEFBZ0FpZ3dIOUh3QTRBZ0FnQmlDQ0FmMGJBVUVDZEdvZ2d3SDlId0U0QWdBZ0JpQ0NBZjBiQWtFQ2RHb2dnd0g5SHdJNEFnQWdCaUNDQWYwYkEwRUNkR29nZ3dIOUh3TTRBZ0FnZ0FIOURBUUFBQUFFQUFBQUJBQUFBQVFBQUFEOXJnRWhnQUVnQVVFRWFpSUJJQXhIRFFBTElBd2lCeUFTUmcwQkMwRUFJUkVnQnlFQklDQUVRQU5BSUFZZ0FTQVFiQ0FJYWtFQ2RHb2dFeUFCUVFKMGFpb0NBRGdDQUNBQlFRRnFJUUVnRVVFQmFpSVJJQ0JIRFFBTEN5QUhJQkpyUVh4TERRQURRQ0FHSUFFZ0VHd2dDR3BCQW5ScUlCTWdBVUVDZEdvcUFnQTRBZ0FnQmlBQlFRRnFJZ2NnRUd3Z0NHcEJBblJxSUJNZ0IwRUNkR29xQWdBNEFnQWdCaUFCUVFKcUlnY2dFR3dnQ0dwQkFuUnFJQk1nQjBFQ2RHb3FBZ0E0QWdBZ0JpQUJRUU5xSWdjZ0VHd2dDR3BCQW5ScUlCTWdCMEVDZEdvcUFnQTRBZ0FnR0NBQlFRUnFJZ0ZIRFFBTEN5QUlRUUZxSWdnZ0RrY05BQXNMSUJ3Z0R5QWNLQUlJSWd4ckloTTJBZ1FnRlNnQ25BRWhBU0FjUVFBMkFoQWdIQ0FNTmdJVUlCeEJBRFlDR0NBY0lCTTJBaHdnSENBQlFRSnZJaGcyQWd3Q1FDQmFSU0FPUVE5TGNVVUVRQ0FLSVFFZ0RrRUlTUTBCSUE5QmZuRWhJU0FQUVFGeElTSWdFMEYrY1NFb0lCTkJBWEVoSnlBTVFYNXhJVEFnREVFQmNTRXRJQ2tnSkVGL2Myb2hJeUFjS0FJQUloSWdHRUVGZENJSGFpRWdJQklnQjJ0QklHb2hIaUFNSUJCc1FRSjBJU29nRGlFSUEwQkJBQ0VHUVFBaEJ3SkFBa0FDUUNBTURnSUNBUUFMQTBBZ0lDQUdRUVowYWlJUklBRWdCaUFRYkVFQ2RHb2lKZjBBQWdEOUN3SUFJQkVnSmYwQUFoRDlDd0lRSUNBZ0JrRUJjaUlSUVFaMGFpSWxJQUVnRUNBUmJFRUNkR29pRWYwQUFoRDlDd0lRSUNVZ0VmMEFBZ0Q5Q3dJQUlBWkJBbW9oQmlBSFFRSnFJZ2NnTUVjTkFBc0xJQzFGRFFBZ0lDQUdRUVowYWlJSElBRWdCaUFRYkVFQ2RHb2lCdjBBQWdEOUN3SUFJQWNnQnYwQUFoRDlDd0lRQ3dKQUlBd2dEMFlOQUNBQklDcHFJUWRCQUNFR1FRQWhFU0FNSUNOSEJFQURRQ0FlSUFaQkJuUnFJaVVnQnlBR0lCQnNRUUowYWlJcy9RQUNBUDBMQWdBZ0pTQXMvUUFDRVAwTEFoQWdIaUFHUVFGeUlpVkJCblJxSWl3Z0J5QVFJQ1ZzUVFKMGFpSWwvUUFDRVAwTEFoQWdMQ0FsL1FBQ0FQMExBZ0FnQmtFQ2FpRUdJQkZCQW1vaUVTQW9SdzBBQ3dzZ0owVU5BQ0FlSUFaQkJuUnFJaEVnQnlBR0lCQnNRUUowYWlJSC9RQUNBUDBMQWdBZ0VTQUgvUUFDRVAwTEFoQUxJQndRSWdKQUlBOUZEUUJCQUNFR1FRQWhCeUFqQkVBRFFDQUJJQVlnRUd4QkFuUnFJaEVnRWlBR1FRVjBhaUlsL1FBQ0FQMExBZ0FnRVNBbC9RQUNFUDBMQWhBZ0FTQUdRUUZ5SWhFZ0VHeEJBblJxSWlVZ0VpQVJRUVYwYWlJUi9RQUNFUDBMQWhBZ0pTQVIvUUFDQVAwTEFnQWdCa0VDYWlFR0lBZEJBbW9pQnlBaFJ3MEFDd3NnSWtVTkFDQUJJQVlnRUd4QkFuUnFJZ2NnRWlBR1FRVjBhaUlHL1FBQ0FQMExBZ0FnQnlBRy9RQUNFUDBMQWhBTElBRkJJR29oQVNBSVFRaHJJZ2hCQjBzTkFBc01BUXRCQVNBT1FRTjJJZ0VnUnlBQklFZEpHeUlJSUFoQkFVMGJJUkVnRGlBSWJrRjRjU0VTSUE1QmVIRWhJRUVBSVFjZ0NpRUJBMEJCTUJBVUlnWkZEUVFnQmlCR0VCZ2lIallDQUNBZVJRUkFJQjhRSUNBR0VCQkJBQXdHQ3lBR0lBRTJBaWdnQmlBUU5nSWtJQVlnRHpZQ0lDQUdJQk0yQWh3Z0JrRUFOZ0lZSUFZZ0REWUNGQ0FHUVFBMkFoQWdCaUFZTmdJTUlBWWdERFlDQ0NBR0lCTTJBZ1FnQmlBZ0lBY2dFbXhySUJJZ0IwRUJhaUlISUFoR0d5SWVOZ0lzSUI5QkRTQUdFQzBnQVNBZVFRSjBhaUVCSUFjZ0VVY05BQXNnSHhBZ0N3SkFJQTVCQjNFaUVrVU5BQ0FZUVFWMElTQWdIQ2dDQUNFSUFrQWdERVVOQUNBSUlDQnFJUkVnRWtFQ2RDRVlRUUFoQmlBTVFRRkhCRUFnREVGK2NTRWVRUUFoQndOQUlCRWdCa0VHZEdvZ0FTQUdJQkJzUVFKMGFpQVlFQklhSUJFZ0JrRUJjaUlqUVFaMGFpQUJJQkFnSTJ4QkFuUnFJQmdRRWhvZ0JrRUNhaUVHSUFkQkFtb2lCeUFlUncwQUN3c2dERUVCY1VVTkFDQVJJQVpCQm5ScUlBRWdCaUFRYkVFQ2RHb2dHQkFTR2dzQ1FDQU1JQTlHRFFBZ0NDQWdhMEVnYWlFSElBRWdEQ0FRYkVFQ2RHb2hFU0FTUVFKMElSaEJBQ0VHSUF3Z0tTQWtRWDl6YWtjRVFDQVRRWDV4SVNCQkFDRU1BMEFnQnlBR1FRWjBhaUFSSUFZZ0VHeEJBblJxSUJnUUVob2dCeUFHUVFGeUloNUJCblJxSUJFZ0VDQWViRUVDZEdvZ0dCQVNHaUFHUVFKcUlRWWdERUVDYWlJTUlDQkhEUUFMQ3lBVFFRRnhSUTBBSUFjZ0JrRUdkR29nRVNBR0lCQnNRUUowYWlBWUVCSWFDeUFjRUNJZ0QwVU5BQ0FTUVFKMElRZEJBQ0VHSUNSQkFXb2dLVWNFUUNBUFFYNXhJUXhCQUNFUkEwQWdBU0FHSUJCc1FRSjBhaUFJSUFaQkJYUnFJQWNRRWhvZ0FTQUdRUUZ5SWhNZ0VHeEJBblJxSUFnZ0UwRUZkR29nQnhBU0dpQUdRUUpxSVFZZ0VVRUNhaUlSSUF4SERRQUxDeUFQUVFGeFJRMEFJQUVnQmlBUWJFRUNkR29nQ0NBR1FRVjBhaUFIRUJJYUN5QVZRWmdCYWlFVklCWkJBV3NpRmcwQUMwRUJEQUlMUVFFaEJ5QUpLQUljSWd3Z0NFR1lBV3hxSWlOQm1BRnJJaThvQWdBZ0kwR1FBV3NvQWdCR0RRSWdJMEdVQVdzaVBTZ0NBQ0FqUVl3QmF5Z0NBRVlOQWlBTUtBSUVJUThnRENnQ0RDRVdJQXdvQWdBaEVDQU1LQUlJSVJNZ0NTZ0NSQ0VTSUFrb0FrQWhFU0FKS0FJOElSb2dDU2dDT0NFZklBa2dDQkJjSWg1RkJFQkJBQ0VIREFNTElBaEJBVVlFUUNBZUlDTkJFR3NvQWdBaUFTQXZLQUlBSWdacklDTkJER3NvQWdBZ1BTZ0NBQ0lLYXlBalFRaHJLQUlBSWdnZ0Jtc2dJMEVFYXlnQ0FDQUtheUFKS0FJMFFRRWdDQ0FCYXhBZUlCNFFJd3dEQzBFQUlRWUNRQUpBSUFoQkFXc2lDa0VFU1FSQUlBb2hCeUFNSVFFTUFRc2dDa0VEY1NFSElBd2dDa0Y4Y1NJVlFaZ0JiR29oQVFOQUlJQUJJQXdnRGtHWUFXeHFJZ1pCNkFScUlBWkIwQU5xSUFaQnVBSnFJQWI5Q1FLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlQUVhaUFHUWNnRGFpQUdRYkFDYWlBRy9Ra0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0JrSHNCR29nQmtIVUEyb2dCa0c4QW1vZ0J2MEpBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQVpCNUFScUlBWkJ6QU5xSUFaQnRBSnFJQWI5Q1FLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0dBQVNBT1FRUnFJZzRnRlVjTkFBc2dnQUVnZ0FFZ2dBSDlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZ0FFZ2dBRWdnQUg5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5dVFIOUd3QWhCaUFLSUJWR0RRRUxBMEFnQmlBQktBS2dBU0FCS0FLWUFXc2lDaUFHSUFwTEd5SUdJQUVvQXFRQklBRW9BcHdCYXlJS0lBWWdDa3NiSVFZZ0FVR1lBV29oQVNBSFFRRnJJZ2NOQUFzTEFrQWdCa0dBZ0lEQUFFOE5BQ0FjSUFaQkJYUVFHQ0loTmdJZ0lDRkZEUUFnSENBaE5nSUFBa0FnQ0FSQUlCWWdEMnNoQ2lBVElCQnJJUVlnSVVFZ2FpRStJQWl0SVljQklCS3RJWW9CSUJHdElZc0JJQnF0SVlnQklCK3RJWXdCSUFrb0FoUWlRcTBoalFGQ0FTR0dBUU5BSUJ3Z0NqWUNDQ0FjSUFZMkFpZ2dEQ2dDcEFFaEJ5QU1LQUtnQVNFSUlBd29BcHdCSVFFZ0hDQU1LQUtZQVNJVlFRSnZJaUkyQWl3Z0hDQUJRUUp2SWo4MkFnd2dIQ0FJSUJWcklpQWdCbXNpS0RZQ0pDQWNJQWNnQVdzaUV5QUtheUk0TmdJRUlCOGlGaUVJSUJvaUFTRU9JQkVpQnlFWUlCSWlGU0VQQWtBZ2hnRWdqUUZSRFFBZ1FpQ0dBYWRySVJCQkFDRU9RUUFoQ0NBV0JFQkNmeUFRclNLSkFZWkNmNFVnakFGOElJa0JpS2NoQ0FzZ0dnUkFRbjhnRUswaWlRR0dRbitGSUlnQmZDQ0pBWWluSVE0TFFRQWhGVUVBSVFjZ0VRUkFRbjhnRUswaWlRR0dRbitGSUlzQmZDQ0pBWWluSVFjTElCSUVRRUovSUJDdElva0Joa0ovaFNDS0FYd2dpUUdJcHlFVkMwRUFJUmhCQUNFV1FRRWdFRUVCYTNRaUd5QWZTUVJBSUI4Z0cydXRRbjhnRUswaWlRR0dRbitGZkNDSkFZaW5JUllMSUJFZ0cwc0VRQ0FSSUJ0cnJVSi9JQkN0SW9rQmhrSi9oWHdnaVFHSXB5RVlDMEVBSVE5QkFDRUJJQm9nRzBzRVFDQWFJQnRyclVKL0lCQ3RJb2tCaGtKL2hYd2dpUUdJcHlFQkN5QVNJQnRORFFBZ0VpQWJhNjFDZnlBUXJTS0pBWVpDZjRWOElJa0JpS2NoRHd0QmZ5QVlJQXdvQXJRQkloQnJJaHRCQUNBWUlCdFBHeUlZUVFScUloc2dHQ0FiU3hzaUdDQW9JQmdnS0VrYklpMUJmeUFISUF3b0F0Z0JJaGhySWh0QkFDQUhJQnRQR3lJSFFRUnFJaHNnQnlBYlN4c2lCeUFHSUFZZ0Iwc2JJaXNnSWh0QkFYUWlCeUFySUMwZ0lodEJBWFJCQVhJaUd5QUhJQnRMR3lJb0lDQkpJUlFnRmlBUWF5SUhRUUFnQnlBV1RSc2lCMEVFYXlJV1FRQWdCeUFXVHhzaUp5QUlJQmhySWdkQkFDQUhJQWhOR3lJSFFRUnJJZ2hCQUNBSElBaFBHeUl3SUNJYlFRRjBJaGdnTUNBbklDSWJRUUYwUVFGeUlpUkpJU2tnRGlBTUtBSzRBU0lXYXlJSFFRQWdCeUFPVFJzaUIwRUVheUlJUVFBZ0J5QUlUeHNpQ0NFUUlBRWdEQ2dDM0FFaURtc2lCMEVBSUFFZ0IwOGJJZ0ZCQkdzaUIwRUFJQUVnQjA4YklnRWhCMEYvSUJVZ0Ztc2lGa0VBSUJVZ0ZrOGJJaFZCQkdvaUZpQVZJQlpMR3lJVklBb2dDaUFWU3hzaUZpRVZRWDhnRHlBT2F5SU9RUUFnRGlBUFRSc2lEa0VFYWlJUElBNGdEMHNiSWc0Z09DQU9JRGhKR3lJYklROGdQd1JBSUFFaEVDQVdJUThnR3lFVklBZ2hCd3NnS0NBZ0lCUWJJU2dnR0NBa0lDa2JJUmdnSENBdE5nSThJQndnSnpZQ09DQWNJQ3MyQWpRZ0hDQXdOZ0l3QWtBZ0UwRUlTUVJBUVFjaEJrRUFJUTRNQVFzZ1BpQWlRUVYwSWc1cklDZEJCblJxSVRnZ0RpQWhhaUF3UVFaMGFpRVVJQVlnTFdvaExTQUdJQ2RxSVNjZ0NpQWJhaUVrSUFFZ0Ntb2hLU0FoSUJoQkJYUnFJU3BCQUNFT0EwQUNRQUpBSUE0Z0Zra2dEa0VIY2lJR0lBaFBjUTBBSUE0Z0pFa2dCaUFwVDNFTkFDQU9RUWhxSVE0TUFRdEJDQ0FUSUE1cklnWWdCa0VJVHhzaEpVRUFJUVlEUUNBZUlEQWdCaUFPYWlJaUlDc2dJa0VCYWlJc0lCUWdCa0VDZENJdWFrRVFRUUFRSGlBZUlDY2dJaUF0SUN3Z0xpQTRha0VRUVFBUUhpQUdRUUZxSWdZZ0pVY05BQXNnSEVFZ2FoQWlJQjRnR0NBT0lDZ2dEa0VJYWlJT0lDcEJDRUVCUVFBUUprVU5CUXNnRGtFSGNpSUdJQk5KRFFBTEN3SkFJQTRnRTA4TkFDQU9JQlpKSUFZZ0NFOXhSUVJBSUE0Z0NpQWJhazhOQVNBR0lBRWdDbXBKRFFFTElCeEJJR29oQmtFQUlTSWdFeUFPYXlJd0JFQURRQ0FlSUFZb0FoQWlMU0FPSUNKcUlpY2dCaWdDRkNBblFRRnFJaXNnSWtFQ2RDSTRJQVlvQWdBZ0JpZ0NERUVGZEdvZ0xVRUdkR3BxUVJCQkFCQWVJQjRnQmlnQ0dDSXRJQVlvQWdnaUZHb2dKeUFHS0FJY0lCUnFJQ3NnQmlnQ0FDQUdLQUlNUVFWMGF5QXRRUVowYWlBNGFrRWdha0VRUVFBUUhpQWlRUUZxSWlJZ01FY05BQXNMSUFZUUlpQWVJQmdnRGlBb0lCTWdJU0FZUVFWMGFrRUlRUUZCQUJBbVJRMERDeUFjSUJzMkFod2dIQ0FCTmdJWUlCd2dGallDRkNBY0lBZzJBaEFnR0NBb1NRUkFJQlZCQVhRaUJpQVBRUUYwUVFGeUloVWdCaUFWU3hzaUJpQVRJQVlnRTBrYklRWWdQaUEvUVFWMEloVnJJQUZCQm5ScUlRNGdGU0FoYWlBSVFRWjBhaUVWSUFvZ0cyb2hEeUFCSUFwcUlRb2dJU0FRUVFGMElnRWdCMEVCZEVFQmNpSUhJQUVnQjBrYklnZEJCWFJxSVJBRFFDQWVJQmdnQ0VFSUlDZ2dHR3NpQVNBQlFRaFBHeUFZYWlJQklCWWdGVUVCUVJBUUhpQWVJQmdnQ2lBQklBOGdEa0VCUVJBUUhpQWNFQ0lnSGlBWUlBY2dBU0FHSUJCQkFVRUlRUUFRSmtVTkJDQVlRUWhxSWhnZ0tFa05BQXNMSUF4Qm1BRnFJUXdnSUNFR0lCTWhDaUNHQVVJQmZDS0dBU0NIQVZJTkFBc0xRUUVoQnlBZUlDTkJFR3NvQWdBaUFTQXZLQUlBSWdacklDTkJER3NvQWdBZ1BTZ0NBQ0lLYXlBalFRaHJLQUlBSWdnZ0Jtc2dJMEVFYXlnQ0FDQUtheUFKS0FJMFFRRWdDQ0FCYXhBZUlCNFFJeUFoRUJBTUJBc2dIaEFqSUNFUUVFRUFJUWNNQXdzZ0hoQWpRUUFoQnd3Q0N5QWZFQ0JCQUFzaEJ5QWNLQUlnRUJBTElCeEJRR3NrQUNBSERRQU1CQXNnSFVHNENHb2hIU0FOUVRScUlRMGdDVUhNQUdvaENTQUxRUUZxSWdzZ0Z5Z0NFRWtOQUFzZ0dTZ0NJQ0VkSUJrb0FoUW9BZ0FoRndzQ1FDQWRLQUlRSWdsRkRRQWdHU2dDUkEwQUlCY29BaFFpRFNnQ0hDRUJBa0FDUUFKQUlCa29Ba0FpQmdSQUlCY29BaEFpQzBFRFNRMENBa0FnRFNnQ0dDSUhJQTBvQW1SR0JFQWdCeUFOS0FLd0FVWU5BUXNnTTBFQlFkVEtBRUVBRUE4TUJ3c0NRQ0FaS0FJWUtBSVlJZ29vQWlRaUNDQUtLQUpZUncwQUlBZ2dDaWdDakFGSERRQWdBU0FIUVpnQmJDSUthaUlCUVl3QmF5Z0NBQ0FCUVpRQmF5Z0NBR3NnQVVHUUFXc29BZ0FnQVVHWUFXc29BZ0JyYkNJQklBMG9BbWdnQ21vaUIwR01BV3NvQWdBZ0IwR1VBV3NvQWdCcklBZEJrQUZyS0FJQUlBZEJtQUZyS0FJQWEyeEhEUUFnRFNnQ3RBRWdDbW9pQjBHTUFXc29BZ0FnQjBHVUFXc29BZ0JySUFkQmtBRnJLQUlBSUFkQm1BRnJLQUlBYTJ3Z0FVWU5BZ3NnTTBFQlFkVEtBRUVBRUE4TUJnc2dGeWdDRUNJTFFRTkpEUUVDUUNBWktBSVlLQUlZSWdjb0FpUWlDaUFIS0FKWVJ3MEFJQW9nQnlnQ2pBRWlDRWNOQUNBQklBcEJtQUZzSWdkcUlnRW9BcFFCSUFFb0Fvd0JheUFCS0FLUUFTQUJLQUtJQVd0c0lnRWdCeUFOS0FKb2FpSUhLQUtVQVNBSEtBS01BV3NnQnlnQ2tBRWdCeWdDaUFGcmJFY05BQ0FOS0FLMEFTQUlRWmdCYkdvaUJ5Z0NsQUVnQnlnQ2pBRnJJQWNvQXBBQklBY29Bb2dCYTJ3Z0FVWU5BUXNnTTBFQlFkVEtBRUVBRUE4TUJRc2dDVUVDUmdSQUlCMG9BdWdyUlEwRElBdEJBblFRRkNJTFJRMEZJQmNvQWhBaUNFVU5BaUFaS0FKQUJFQkJBQ0VYQWtBZ0NFRU1TUVJBUVFBaEJnd0JDeUFOUVNScUlRb0NRQ0FMSUEwZ0NFSE1BR3hxUVNSclR3MEFJQW9nQ3lBSVFRSjBhazhOQUVFQUlRWU1BUXNnRFVHSUFtb2hEQ0FOUWJ3QmFpRVZJQTFCOEFCcUlRNGdEU0FJUVh4eElnWkJ6QUJzYWlFTlFRQWhDUU5BSUFzZ0NVRUNkR29nRENBSlFjd0FiQ0lIYWlBSElCVnFJQWNnRG1vZ0J5QUthdjBKQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBbEJCR29pQ1NBR1J3MEFDeUFHSUFoR0RRUUxBa0FnQ0VFRGNTSUhSUVJBSUFZaENRd0JDeUFHSVFrRFFDQUxJQWxCQW5ScUlBMG9BaVEyQWdBZ0NVRUJhaUVKSUExQnpBQnFJUTBnRjBFQmFpSVhJQWRIRFFBTEN5QUdJQWhyUVh4TERRTWdDMEVNYWlFR0lBdEJDR29oQ2lBTFFRUnFJUXdEUUNBTElBbEJBblFpQjJvZ0RTZ0NKRFlDQUNBSElBeHFJQTBvQW5BMkFnQWdCeUFLYWlBTktBSzhBVFlDQUNBR0lBZHFJQTBvQW9nQ05nSUFJQTFCc0FKcUlRMGdDVUVFYWlJSklBaEhEUUFMREFNTFFRQWhGd0pBSUFoQkRFa0VRRUVBSVFZTUFRc2dEVUUwYWlFS0FrQWdDeUFOSUFoQnpBQnNha0VVYTA4TkFDQUtJQXNnQ0VFQ2RHcFBEUUJCQUNFR0RBRUxJQTFCbUFKcUlRd2dEVUhNQVdvaEZTQU5RWUFCYWlFT0lBMGdDRUY4Y1NJR1Fjd0FiR29oRFVFQUlRa0RRQ0FMSUFsQkFuUnFJQXdnQ1VITUFHd2lCMm9nQnlBVmFpQUhJQTVxSUFjZ0NtcjlDUUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBSlFRUnFJZ2tnQmtjTkFBc2dCaUFJUmcwREN3SkFJQWhCQTNFaUIwVUVRQ0FHSVFrTUFRc2dCaUVKQTBBZ0N5QUpRUUowYWlBTktBSTBOZ0lBSUFsQkFXb2hDU0FOUWN3QWFpRU5JQmRCQVdvaUZ5QUhSdzBBQ3dzZ0JpQUlhMEY4U3cwQ0lBdEJER29oQmlBTFFRaHFJUW9nQzBFRWFpRU1BMEFnQ3lBSlFRSjBJZ2RxSUEwb0FqUTJBZ0FnQnlBTWFpQU5LQUtBQVRZQ0FDQUhJQXBxSUEwb0Fzd0JOZ0lBSUFZZ0Iyb2dEU2dDbUFJMkFnQWdEVUd3QW1vaERTQUpRUVJxSWdrZ0NFY05BQXNNQWdzZ0hTZ0MwQ3NvQWhSQkFVWUVRQ0FHQkVBZ0RTZ0NKQ0FOS0FKd0lBMG9BcndCSUFFUVh3d0VDeUFOS0FJMElBMG9Bb0FCSUEwb0Fzd0JJQUVRWHd3REN5QUdCRUFnRFNnQ0pDQU5LQUp3SUEwb0Fyd0JJQUVRWGd3REN5QU5LQUkwSUEwb0FvQUJJQTBvQXN3QklBRVFYZ3dDQ3lCQUlBczJBZ0FnTTBFQlFaSExBQ0JBRUE4TUFRc2dHU2dDR0NnQ0dDZ0NJQm9DZnlBZEtBTG9LeUVIUVFBaERrRUFJQWhCQTNRUUZDSU5SUTBBR2dKQUlBRkZEUUFnQ0VVTkFDQU5JQWhCQW5ScUlSTWdDRUY4Y1NFUElBaEJBM0VoRENBSVFRRnJJUkFEUUVFQUlSZEJBQ0VKSUJCQkEwOEVRQU5BSUEwZ0YwRUNkQ0lHYWlBR0lBdHFLQUlBS2dJQU9BSUFJQTBnQmtFRWNpSUthaUFLSUF0cUtBSUFLZ0lBT0FJQUlBMGdCa0VJY2lJS2FpQUtJQXRxS0FJQUtnSUFPQUlBSUEwZ0JrRU1jaUlHYWlBR0lBdHFLQUlBS2dJQU9BSUFJQmRCQkdvaEZ5QUpRUVJxSWdrZ0QwY05BQXNMUVFBaENpQU1CRUFEUUNBTklCZEJBblFpQm1vZ0JpQUxhaWdDQUNvQ0FEZ0NBQ0FYUVFGcUlSY2dDa0VCYWlJS0lBeEhEUUFMQzBFQUlRWWdCeUVYQTBBZ0V5QUdRUUowSWhKcUlnbEJBRFlDQUVNQUFBQUFJWTRCUVFBaENrRUFJUllnRUVFQ1N3UkFBMEFnQ1NBWEtnSUFJQTBnQ2tFQ2RHb2lGU29DQUpRZ2pnR1NJbzRCT0FJQUlBa2dGeW9DQkNBVktnSUVsQ0NPQVpJaWpnRTRBZ0FnQ1NBWEtnSUlJQlVxQWdpVUlJNEJraUtPQVRnQ0FDQUpJQmNxQWd3Z0ZTb0NESlFnamdHU0lvNEJPQUlBSUFwQkJHb2hDaUFYUVJCcUlSY2dGa0VFYWlJV0lBOUhEUUFMQzBFQUlSVWdEQVJBQTBBZ0NTQVhLZ0lBSUEwZ0NrRUNkR29xQWdDVUlJNEJraUtPQVRnQ0FDQUtRUUZxSVFvZ0YwRUVhaUVYSUJWQkFXb2lGU0FNUncwQUN3c2dDeUFTYWlJS0lBb29BZ0FpQ2tFRWFqWUNBQ0FLSUk0Qk9BSUFJQVpCQVdvaUJpQUlSdzBBQ3lBT1FRRnFJZzRnQVVjTkFBc0xJQTBRRUVFQkN5RjdJQXNRRUNCN1JRMENDeUFaS0FJVUtBSUFJaFlvQWhCRkJFQkJBU0V4REFJTElCa29BaUFvQXRBckloZEJ1QWhxSVJNZ0YwRzBDR29oRWlBWktBSkVJUkFnRmlnQ0ZDRUhJQmtvQWhnb0FoZ2hDa0VBSVFnRFFBSkFJQkFFUUNBUUlBaEJBblJxS0FJQVJRMEJDeUFIS0FJY0lnRWdDaWdDSkVHWUFXeHFJUXNDZnlBWktBSkFSUVJBSUFzb0FwUUJJQXNvQW93QmF5RUdJQXNvQXBBQklBc29Bb2dCYXlFQlFRQWhERUUwREFFTElBRWdCeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQXNvQWdnZ0N5Z0NBR3NpQVNBR1FaZ0JheWdDQUdwcklRd2dDeWdDRENBTEtBSUVheUVHUVNRTElRa2dDaWdDR0NFTEFuOGdDaWdDSUFSQVFRRWdDMEVCYTNRaUMwRUJheUVkUVFBZ0Myc01BUXRCZnlBTGRFRi9jeUVkUVFBTElROGdBVVVOQUNBR1JRMEFJQWNnQ1dvb0FnQWhDU0FYS0FJVVFRRkdCRUFnRXlBSVFiZ0liQ0lMYWlFUklBc2dFbW9oR0NBQlFRRnhJUm9nQVVFQ2RDRXpJQUZCZkhFaURrRUNkQ0ViSUIzOUVTR0NBU0FQL1JFaGdBRkJBQ0VWSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBSklCRkpJQmdnQ1NBemFrbHhEUUFnQ1NBYmFpRU5JQmY5Q1FLMENDR0RBVUVBSVFzRFFDQUpJQXRCQW5ScUlpQWdnQUVnZ3dFZ0lQMEFBZ0Q5cmdFaWhBRWdnZ0g5dGdFZ2hBRWdnQUg5T2YxUy9Rc0NBQ0FMUVFScUlnc2dEa2NOQUFzZ0RpSUxJQUZHRFFJTUFRc2dDU0VOUVFBaEN3c2dDMEVCY2lFSklCb0VRQ0FOSUE4Z0Z5Z0N0QWdnRFNnQ0FHb2lDeUFkSUFzZ0hVZ2JJQXNnRDBnYk5nSUFJQTFCQkdvaERTQUpJUXNMSUFFZ0NVWU5BQU5BSUEwZ0R5QVhLQUswQ0NBTktBSUFhaUlKSUIwZ0NTQWRTQnNnQ1NBUFNCczJBZ0FnRFNBUElCY29BclFJSUEwb0FnUnFJZ2tnSFNBSklCMUlHeUFKSUE5SUd6WUNCQ0FOUVFocUlRMGdDMEVDYWlJTElBRkhEUUFMQ3lBTklBeEJBblJxSVFrZ0ZVRUJhaUlWSUFaSERRQUxEQUVMSUIyc0lZWUJJQStzSVljQlFRQWhGUU5BUVFBaEN3TkFJQWtDZnlBZElBa3FBZ0FpamdGREFBQUFUMTROQUJvZ0R5Q09BVU1BQUFEUFhRMEFHaUNIQVNBWE5BSzBDQUovSUk0QmtDS09BWXREQUFBQVQxMEVRQ0NPQWFnTUFRdEJnSUNBZ0hnTHJId2lpZ0VnaGdFZ2hnRWdpZ0ZWR3lDSEFTQ0tBVlVicHdzMkFnQWdDVUVFYWlFSklBdEJBV29pQ3lBQlJ3MEFDeUFKSUF4QkFuUnFJUWtnRlVFQmFpSVZJQVpIRFFBTEN5QUhRY3dBYWlFSElCZEJ1QWhxSVJjZ0NrRTBhaUVLUVFFaE1TQUlRUUZxSWdnZ0ZpZ0NFRWtOQUFzTUFRc2dCVUVCUVpvWlFRQVFEd3NnUUVFUWFpUUFJREZGQkVBZ1R4QXVJQUFnQUNnQ0NFR0FnQUp5TmdJSUlBVkJBVUh3MUFCQkFCQVBEQUVMQWtBZ0FrVU5BQUovSUFJaEIwRUFJUVlDUUNBQUtBTFFBU0lWUVFFUVZDSUJRWDlHRFFBZ0FTQURTdzBBUVFFZ0ZTZ0NHQ0lCS0FJUVJRMEJHaUFCS0FJWUlRZ2dGU2dDRkNnQ0FDZ0NGQ0VYQTBBZ0NDZ0NHQ0lCUVFkeElRSWdBVUVEZGlFRElCY29BaHdpQmlBSUtBSWtRWmdCYkdvaEFRSi9JQlVvQWtBRVFDQUdJQmNvQWhoQm1BRnNhaUlHUVpBQmF5Z0NBQ0FCS0FJSUlBRW9BZ0JySWdzZ0JrR1lBV3NvQWdCcWF5RU1JQUVvQWd3Z0FTZ0NCR3NoQ1VFa0RBRUxJQUVvQXBRQklBRW9Bb3dCYXlFSklBRW9BcEFCSUFFb0FvZ0JheUVMUVFBaERFRTBDeUFYYWlnQ0FDRUJBa0FDUUFKQUFrQUNRRUVFSUFNZ0FrRUFSMm9pQWlBQ1FRTkdHMEVCYXc0RUFRSUVBQVFMSUFsRkRRTWdDeUFNYWlFR0lBdEJBblFoQWlBSlFRUlBCRUFnQ1VGOGNTRUtRUUFoQ3dOQUlBY2dBU0FDRUJJaEJ5QUJJQVpCQW5RaUEyb2lEU0FEYWlJTUlBTnFJZzRnQTJvaEFTQUNJQWRxSUEwZ0FoQVNJQUpxSUF3Z0FoQVNJQUpxSUE0Z0FoQVNJQUpxSVFjZ0MwRUVhaUlMSUFwSERRQUxDMEVBSVFzZ0NVRURjU0lEUlEwREEwQWdCeUFCSUFJUUVpRUhJQUVnQmtFQ2RHb2hBU0FDSUFkcUlRY2dDMEVCYWlJTElBTkhEUUFMREFNTElBbEZJQXRGY2lFQ0lBZ29BaUJGRFFFZ0FnMENJQXRCQW5RaERpQUxRWHh4SWdOQkFuUWhEMEVBSVEwRFFBSkFBa0FDUUNBTFFRUkpEUUFnQVNBSElBdHFTU0FCSUE1cUlBZExjUTBBSUFNZ0Iyb2hmQ0FCSUE5cUlRWkJBQ0VLQTBBZ0J5QUthaUFCSUFwQkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBUUlEQUFBQUFBQUFBQUFBQUFBQVAxYUFBQUFJQXBCQkdvaUNpQURSdzBBQ3lCOElRY2dBeUlDSUF0R0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFS0lBc2dBaUlCYTBFSGNTSVdCRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBQ0lBdHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQXRIRFFBTEN5QUdJQXhCQW5ScUlRRWdEVUVCYWlJTklBbEhEUUFMREFJTElBbEZJQXRGY2lFQ0lBZ29BaUFFUUNBQ0RRSWdDMEVDZENFT0lBdEJBWFFoRHlBTFFYeHhJZ05CQW5RaEZpQURRUUYwSVJCQkFDRU5BMEFDUUFKQUFrQWdDMEVFU1EwQUlBRWdCeUFQYWtrZ0FTQU9haUFIUzNFTkFDQUJJQlpxSVFZZ0J5QVFhaUY5UVFBaENnTkFJQWNnQ2tFQmRHb2dBU0FLUVFKMGF2MEFBZ0Q5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFBQkJBVUlDUXdOQUFFQUFRQUJBQUg5V3dFQUFDQUtRUVJxSWdvZ0EwY05BQXNnZlNFSElBTWlBaUFMUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ2lBTElBSWlBV3RCQjNFaUV3UkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBcEJBV29pQ2lBVFJ3MEFDd3NnQWlBTGEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUxSdzBBQ3dzZ0JpQU1RUUowYWlFQklBMUJBV29pRFNBSlJ3MEFDd3dDQ3lBQ0RRRWdDMEVDZENFT0lBdEJBWFFoRHlBTFFYeHhJZ05CQW5RaEZpQURRUUYwSVJCQkFDRU5BMEFDUUFKQUFrQWdDMEVFU1EwQUlBRWdCeUFQYWtrZ0FTQU9haUFIUzNFTkFDQUJJQlpxSVFZZ0J5QVFhaUYrUVFBaENnTkFJQWNnQ2tFQmRHb2dBU0FLUVFKMGF2MEFBZ0Q5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFBQkJBVUlDUXdOQUFFQUFRQUJBQUg5V3dFQUFDQUtRUVJxSWdvZ0EwY05BQXNnZmlFSElBTWlBaUFMUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ2lBTElBSWlBV3RCQjNFaUV3UkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBcEJBV29pQ2lBVFJ3MEFDd3NnQWlBTGEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUxSdzBBQ3dzZ0JpQU1RUUowYWlFQklBMUJBV29pRFNBSlJ3MEFDd3dCQ3lBQ0RRQWdDMEVDZENFT0lBdEJmSEVpQTBFQ2RDRVBRUUFoRFFOQUFrQUNRQUpBSUF0QkJFa05BQ0FCSUFjZ0MycEpJQUVnRG1vZ0IwdHhEUUFnQXlBSGFpRi9JQUVnRDJvaEJrRUFJUW9EUUNBSElBcHFJQUVnQ2tFQ2RHcjlBQUlBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwQUJBZ01BQUFBQUFBQUFBQUFBQUFBL1ZvQUFBQWdDa0VFYWlJS0lBTkhEUUFMSUg4aEJ5QURJZ0lnQzBZTkFnd0JDeUFCSVFaQkFDRUNDMEVBSVFvZ0N5QUNJZ0ZyUVFkeEloWUVRQU5BSUFjZ0JpZ0NBRG9BQUNBQlFRRnFJUUVnQjBFQmFpRUhJQVpCQkdvaEJpQUtRUUZxSWdvZ0ZrY05BQXNMSUFJZ0MydEJlRXNOQUFOQUlBY2dCaWdDQURvQUFDQUhJQVlvQWdRNkFBRWdCeUFHS0FJSU9nQUNJQWNnQmlnQ0REb0FBeUFISUFZb0FoQTZBQVFnQnlBR0tBSVVPZ0FGSUFjZ0JpZ0NHRG9BQmlBSElBWW9BaHc2QUFjZ0IwRUlhaUVISUFaQklHb2hCaUFCUVFocUlnRWdDMGNOQUFzTElBWWdERUVDZEdvaEFTQU5RUUZxSWcwZ0NVY05BQXNMSUJkQnpBQnFJUmNnQ0VFMGFpRUlRUUVoQmlCeVFRRnFJbklnRlNnQ0dDZ0NFRWtOQUFzTElBWUxSUTBCSUU4b0F0d3JJZ0ZGRFFBZ0FSQVFJRTlDQURjQzNDc0xJQUFnQUMwQVJFSCtBWEU2QUVRZ0FDQUFLQUlJUWY5K2NUWUNDRUVCSVdjZ0JDa0RDQ0tHQVZBRWZrSUFCU0NHQVNBRUtRTTRmUXRRSUFBb0FnZ2lBVUhBQUVaeERRQWdBVUdBQWtZTkFDQUVJRTVCQ21wQkFpQUZFQnBCQWtjRVFDQUZRUUZCQWlBQUtBSzRBUnRCbGhKQkFCQVBJQUFvQXJnQlJTRm5EQUVMSUU1QkNtb2dUa0VNYWtFQ0VCRWdUaWdDRENJQlFaRC9BMFlOQUNBQlFkbi9BMFlFUUNBQVFZQUNOZ0lJSUFCQkFEWUN6QUVNQVFzZ0JDa0RDQ0tHQVZBRWZrSUFCU0NHQVNBRUtRTTRmUXRRQkVBZ0FFSEFBRFlDQ0NBRlFRSkJyRDlCQUJBUERBRUxRUUFoWnlBRlFRRkI3RDVCQUJBUEN5Qk9RUkJxSkFBZ1p3c0xBQ0FBQkVBZ0FCQVFDd3UwQVFFQmZ5QUFLQUlNUlFSQUlBSWdBQ2dDSkNBQkVRTUFEd3NDUUVFSUVCUWlBMFVOQUNBRElBSTJBZ1FnQXlBQk5nSUFRUWdRRkNJQlJRUkFJQU1RRUE4TElBRWdBellDQUNBQUlBQW9BZ1JCNUFCc0lnSTJBaWdEUUNBQUtBSVlJQUpLRFFBTElBRWdBQ2dDRkRZQ0JDQUFJQUUyQWhRZ0FDQUFLQUlZUVFGcU5nSVlJQUFvQWh3aUFVVU5BQ0FCS0FJQVFRQTJBZ2dnQUNBQktBSUVOZ0ljSUFBZ0FDZ0NJRUVCYXpZQ0lDQUJFQkFMQy9vQ0FRUi9Ba0FnQUVVTkFDQUFLQUtzS0NJQkJFQWdBQ2dDcUNnaUFnUkFRUUFoQVFOQUlBQW9BcXdvSUFGQkEzUnFLQUlBSWdNRVFDQURFQkFnQUNnQ3FDZ2hBZ3NnQVVFQmFpSUJJQUpKRFFBTElBQW9BcXdvSVFFTElBQkJBRFlDcUNnZ0FSQVFJQUJCQURZQ3JDZ0xJQUFvQXJRb0lnRUVRQ0FCRUJBZ0FFRUFOZ0swS0FzZ0FDZ0MwQ3NpQVFSQUlBRVFFQ0FBUVFBMkF0QXJDeUFBS0FMc0t5SUJCRUFnQVJBUUlBQkJBRFlDN0NzTElBQW9BdWdySWdFRVFDQUJFQkFnQUVFQU5nTG9Ld3NnQUNnQy9Dc2lBUVJBSUFFUUVDQUFRUUEyQW9Rc0lBQkNBRGNDL0NzTElBQW9BdkFySWdFRVFDQUFLQUwwS3lJREJIOUJBQ0VDQTBBZ0FTZ0NEQ0lFQkVBZ0JCQVFJQUZCQURZQ0RDQUFLQUwwS3lFREN5QUJRUlJxSVFFZ0FrRUJhaUlDSUFOSkRRQUxJQUFvQXZBckJTQUJDeEFRSUFCQkFEWUM4Q3NMSUFBb0F1UXJJZ0VFUUNBQkVCQWdBRUVBTmdMa0t3c2dBQ2dDM0NzaUFVVU5BQ0FCRUJBZ0FFSUFOd0xjS3dzTHlBY0NFWDhCZmlBQUtBSVFJZ2hCSUU4RVFDQUFLUU1JcHc4TEFrQWdBQ2dDRkNJRFFRUk9CRUFnQUNnQ0FDSUNRUU5yS0FJQUlRRWdBQ0FEUVFScklnTTJBaFFnQUNBQ1FRUnJOZ0lBREFFTElBTkJBRXdFUUF3QkN5QURRUUZ4SVEwZ0FDZ0NBQ0VDQWtBZ0EwRUJSZ1JBUVJnaEJBd0JDeUFEUWY3Ly8vOEhjU0VKUVJnaEJBTkFJQUFnQWtFQmF5SUdOZ0lBSUFJdEFBQWhEQ0FBSUFKQkFtc2lBallDQUNBQUlBTkJBV3MyQWhRZ0JpMEFBQ0VHSUFBZ0EwRUNheUlETmdJVUlBd2dCSFFnQVhJZ0JpQUVRUWhyZEhJaEFTQUVRUkJySVFRZ0JVRUNhaUlGSUFsSERRQUxDeUFOQkVBZ0FDQUNRUUZyTmdJQUlBSXRBQUFoRGlBQUlBTkJBV3MyQWhRZ0RpQUVkQ0FCY2lFQkMwRUFJUU1MSUFBb0FoZ2hBaUFBSUFGQi93RnhJZ2xCandGTE5nSVlJQUJCQjBFSUlBRkJnSUNBK0FkeFFZQ0FnUGdIUmh0QkNDQUNHeUlDUVFoQkIwRUlJQUZCZ0lEOEEzRkJnSUQ4QTBZYklBRkIvLy8vLzNoTkcyb2lCRUVJUVFkQkNDQUJRWUQrQVhGQmdQNEJSaHNnQVVFUWRrSC9BWEVpQlVHUEFVMGJhaUlHUVFoQkIwRUlJQUZCL3dCeFFmOEFSaHNnQVVFSWRrSC9BWEVpQjBHUEFVMGJJQWhxYWlJS05nSVFJQUFnQUNrRENDQUZJQUowSUFGQkdIWnlJQWNnQkhSeUlBa2dCblJ5clNBSXJZYUVJaEkzQXdnZ0NrRWZUUVJBQWtBZ0EwRUVUZ1JBSUFBb0FnQWlBa0VEYXlnQ0FDRUJJQUFnQTBFRWF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBUVFBaEFRd0JDeUFEUVFGeElSQWdBQ2dDQUNFQ0FrQWdBMEVCUmdSQVFSZ2hCRUVBSVFFTUFRc2dBMEgrLy8vL0IzRWhCa0VZSVFSQkFDRUJRUUFoQlFOQUlBQWdBa0VCYXlJSE5nSUFJQUl0QUFBaER5QUFJQUpCQW1zaUFqWUNBQ0FBSUFOQkFXczJBaFFnQnkwQUFDRUhJQUFnQTBFQ2F5SUROZ0lVSUE4Z0JIUWdBWElnQnlBRVFRaHJkSEloQVNBRVFSQnJJUVFnQlVFQ2FpSUZJQVpIRFFBTEN5QVFSUTBBSUFBZ0FrRUJhellDQUNBQ0xRQUFJUkVnQUNBRFFRRnJOZ0lVSUJFZ0JIUWdBWEloQVFzZ0FDQUJRZjhCY1NJQ1FZOEJTellDR0NBQVFRaEJCMEVJSUFGQmdJQ0ErQWR4UVlDQWdQZ0hSaHNnQ1VHUEFVMGJJZ05CQ0VFSFFRZ2dBVUdBZ1B3RGNVR0FnUHdEUmhzZ0FVSC8vLy8vZUUwYmFpSUVRUWhCQjBFSUlBRkJnUDRCY1VHQS9nRkdHeUFCUVJCMlFmOEJjU0lGUVk4QlRSdHFJZ2hCQ0VFSFFRZ2dBVUgvQUhGQi93QkdHeUFCUVFoMlFmOEJjU0lKUVk4QlRSc2dDbXBxTmdJUUlBQWdCU0FEZENBQlFSaDJjaUFKSUFSMGNpQUNJQWgwY3EwZ0NxMkdJQktFSWhJM0F3Z0xJQktuQzhrVUFoMS9CbnNnQUNnQ0NDSUtJQUFvQWdScUlRZ0NRQ0FBS0FJTVJRUkFJQWhCQWtnTkFTQURRUUJNRFFFZ0FDZ0NBQ0lGSUFoQkJHc2lCa0VCZGlJTVFRSjBJZ2tnQVNBS1FRSjBhaUlISUFOQkFuUWlCR3BxUVFScVNTQUZJQXhCQTNScVFRaHFJZ0FnQjBFRWFrdHhJQVVnQVNBRWFpQUpha0VFYWtrZ0FVRUVhaUFBU1hGeUlSSWdDRUVFU1NJVUlBSkJBVWR5SVJVZ0FrRUJSaUFHUVFWTGNTRVdJQWhCL1AvLy93ZHhJUk1nQ0VFQmNTRVhJQXBCQVdvaER5QUlRUU54SVJFZ0FTQUZheUVZSUFVZ0NFRUNkR29oR1NBRklBaEJBV3NpQUVFQ2RHb2hHaUFNUVFGcUlodEJmSEVpRUVFQmRDRUxJQUlnQ214QkFuUWhIQ0FBUVFGMklBSnNRUUowSVIwRFFDQUJLQUlBSUFFZ0hHb29BZ0FpQ1VFQmFrRUJkV3NoQndKQUlCUUVRQ0FKSVFSQkFDRUdEQUVMUVFBaEJnSkFBbjlCQUNBV1JRMEFHa0VBSUJJTkFCb2dDZjBSSVNJZ0IvMFJJU0g5REFBQUFBQUNBQUFBQkFBQUFBWUFBQUFoSlVFQUlRQURRQ0FCSUFCQkFuUnEvUUFDQkNFa0lBRWdBQ0FQYWtFQ2RHcjlBQUlBSVNNZ0JTQUFRUU4wYWlJRUlDSDlXZ0lBQXlBRVFRaHFJQ1FnSXlBaUlDUDlEUXdORGc4UUVSSVRGQlVXRnhnWkdoc2lKUDJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQklpTDlXZ0lBQUNBRVFSQnFJQ0w5V2dJQUFTQUVRUmhxSUNMOVdnSUFBaUFGSUNYOURBRUFBQUFCQUFBQUFRQUFBQUVBQUFEOVVDSW0vUnNBUVFKMGFpQWlJQ0VnSXYwTkRBME9EeEFSRWhNVUZSWVhHQmthRy8ydUFVRUIvYXdCSUNUOXJnRWlJZjFhQWdBQUlBVWdKdjBiQVVFQ2RHb2dJZjFhQWdBQklBVWdKdjBiQWtFQ2RHb2dJZjFhQWdBQ0lBVWdKdjBiQTBFQ2RHb2dJZjFhQWdBRElDWDlEQWdBQUFBSUFBQUFDQUFBQUFnQUFBRDlyZ0VoSlNBaUlTRWdJeUVpSUFCQkJHb2lBQ0FRUncwQUN5QWkvUnNESVFRZ0lmMGJBeUVISUJBZ0cwWU5BU0FMSVFZZ0JDRUpJQkFMSVFBRFFDQUJJQUJCQVdvaUNpQUNiRUVDZEdvb0FnQWhIaUFCSUFBZ0Qyb2dBbXhCQW5ScUtBSUFJUVFnQlNBR1FRSjBhaUlPSUFjMkFnQWdEaUFISUI0Z0JDQUpha0VDYWtFQ2RXc2lCMnBCQVhVZ0NXbzJBZ1FnQmtFQ2FpRUdJQUFnREVjaEh5QUVJUWtnQ2lFQUlCOE5BQXNNQVFzZ0N5RUdDeUFGSUFaQkFuUnFJQWMyQWdCQmZDRUFJQmNFZnlBYUlBRWdIV29vQWdBZ0JFRUJha0VCZFdzaUFEWUNBQ0FBSUFkcVFRRjFJUWRCZUFWQmZBc2dHV29nQkNBSGFqWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCVWdHQ0FOUVFKMGFrRVFTWEpGQkVBRFFDQUJJQUJCQW5RaUJHb2dCQ0FGYXYwQUFnRDlDd0lBSUFCQkJHb2lBQ0FUUncwQUN5QVRJZ1FnQ0VZTkFRc2dCQ0VBSUJFRVFBTkFJQUVnQUNBQ2JFRUNkR29nQlNBQVFRSjBhaWdDQURZQ0FDQUFRUUZxSVFBZ0JrRUJhaUlHSUJGSERRQUxDeUFFSUFoclFYeExEUUFEUUNBQklBQWdBbXhCQW5ScUlBVWdBRUVDZEdvb0FnQTJBZ0FnQVNBQVFRRnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUpxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFOcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQUVFRWFpSUFJQWhIRFFBTEN5QUJRUVJxSVFFZ0RVRUJhaUlOSUFOSERRQUxEQUVMQWtBQ1FBSkFJQWhCQVdzT0FnQUJBZ3NnQTBFQVRBMENRUUFoQWdKQUlBTkJCRWtFUUNBQklRQU1BUXNnQVNBRFFmei8vLzhIY1NJQ1FRSjBhaUVBQTBBZ0FTQUdRUUowYWlJRUlBVDlBQUlBSWlIOUd3QkJBbTM5RVNBaC9Sc0JRUUp0L1J3QklDSDlHd0pCQW0zOUhBSWdJZjBiQTBFQ2JmMGNBLzBMQWdBZ0JrRUVhaUlHSUFKSERRQUxJQUlnQTBZTkF3c0RRQ0FBSUFBb0FnQkJBbTAyQWdBZ0FFRUVhaUVBSUFKQkFXb2lBaUFEUncwQUN3d0NDeUFEUVFCTURRRWdBQ2dDQUNFSklBSWdDbXhCQW5RaEJ3TkFJQWtnQVNnQ0FDQUJJQWRxSWdRb0FnQkJBV3BCQVhWcklnQTJBZ1FnQ1NBQUlBUW9BZ0JxSWdBMkFnQWdBU0FBTmdJQUlBRWdBa0VDZEdvZ0NTZ0NCRFlDQUNBQlFRUnFJUUVnQmtFQmFpSUdJQU5IRFFBTERBRUxJQWhCQTBnTkFDQURRUUJNRFFBZ0FDZ0NBQ0lGSUFnZ0NFRUJjU0lVUlNJR2EwRUVheUlKUVFGMklndEJBblFpQnlBQklBTkJBblFpQUdwcVNTQUZJQXRCQTNScVFReHFJZ1FnQVVFRWFrdHhJQVZCQkdvZ0FDQUJJQXBCQW5ScUlnQnFJQWRxUVFocVNTQUFRUWhxSUFSSmNYSWhGU0FDUVFGSElBaEJCRWx5SVJZZ0FrRUJSaUFKUVFWTGNTRVhJQWhCL1AvLy93ZHhJUkFnQ0VFRGNTRVJJQUVnQldzaEdDQUZJQWhCQW5ScVFRUnJJUmtnQlNBSVFRSnJJZ0JCQW5ScUlSb2dDMEVCYWlJU1FYeHhJZ3hCQVhJaEV5QU1RUUYwUVFGeUlRc2dBaUFLYkVFQ2RDRWJJQUFnQm10QkFra2hIQ0FJUVFGMlFRRnJJQUpzUVFKMElSMERRQ0FGSUFFb0FnQWdBU0FiYWlJUElBSkJBblJxS0FJQUlna2dEeWdDQUNJQWFrRUNha0VDZFdzaUJ5QUFhallDQUVFQklRUUNRQ0FjQkVBZ0NTRUdEQUVMQWtBQ2YwRUJJQmRGRFFBYVFRRWdGUTBBR2lBSi9SRWhJU0FIL1JFaElrRUFJUUFEUUNBRklBQkJBM1JxSWdjZ0FTQUFRUUowSWdScS9RQUNCQ0FoSUFRZ0QycjlBQUlJSWlIOURRd05EZzhRRVJJVEZCVVdGeGdaR2hzaUpDQWgvYTRCL1F3Q0FBQUFBZ0FBQUFJQUFBQUNBQUFBL2E0QlFRTDlyQUg5c1FFaUl5QWpJQ0lnSS8wTkRBME9EeEFSRWhNVUZSWVhHQmthRy8ydUFVRUIvYXdCSUNUOXJnRWlKUDBOQkFVR0J4Z1pHaHNJQ1FvTEhCMGVILzBMQWhRZ0J5QWlJQ1Q5RFF3TkRnOFFFUklUQUFFQ0F4UVZGaGNnSS8wTkFBRUNBd1FGQmdjUUVSSVREQTBPRC8wTEFnUWdJeUVpSUFCQkJHb2lBQ0FNUncwQUN5QWgvUnNESVFZZ0l2MGJBeUVISUF3Z0VrWU5BU0FMSVFRZ0JpRUpJQk1MSVFBRFFDQUJJQUFnQW14QkFuUnFLQUlBSVI0Z0R5QUFRUUZxSWdvZ0FteEJBblJxS0FJQUlRWWdCU0FFUVFKMGFpSU9JQWMyQWdBZ0RpQUhJQjRnQmlBSmFrRUNha0VDZFdzaUIycEJBWFVnQ1dvMkFnUWdCRUVDYWlFRUlBQWdFa2NoSUNBS0lRQWdCaUVKSUNBTkFBc01BUXNnQ3lFRUN5QVlJQTFCQW5ScUlRa2dCU0FFUVFKMGFpQUhOZ0lBQWtBZ0ZFVUVRQ0FhSUFFZ0hXb29BZ0FnQmtFQmFrRUJkV3NpQUNBSGFrRUJkU0FHYWpZQ0FBd0JDeUFHSUFkcUlRQUxJQmtnQURZQ0FFRUFJUVpCQUNFQVFRQWhCQUpBSUJZZ0NVRVFTWEpGQkVBRFFDQUJJQUJCQW5RaUJHb2dCQ0FGYXYwQUFnRDlDd0lBSUFCQkJHb2lBQ0FRUncwQUN5QVFJZ1FnQ0VZTkFRc2dCQ0VBSUJFRVFBTkFJQUVnQUNBQ2JFRUNkR29nQlNBQVFRSjBhaWdDQURZQ0FDQUFRUUZxSVFBZ0JrRUJhaUlHSUJGSERRQUxDeUFFSUFoclFYeExEUUFEUUNBQklBQWdBbXhCQW5ScUlBVWdBRUVDZEdvb0FnQTJBZ0FnQVNBQVFRRnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUpxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFOcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQUVFRWFpSUFJQWhIRFFBTEN5QUJRUVJxSVFFZ0RVRUJhaUlOSUFOSERRQUxDd3MzQVFKL0l3QkJFR3NpQVNRQUlBQUVmeUFCUVF4cVFTQWdBQkJzSVFCQkFDQUJLQUlNSUFBYkJVRUFDeUVDSUFGQkVHb2tBQ0FDQ3hzQkFYOGdBQVJBSUFBb0FnZ2lBUVJBSUFFUUVBc2dBQkFRQ3dzeEFRSi9RUUZCREJBVElnQUVRQ0FBUVFvMkFnUWdBRUVLUVFRUUV5SUJOZ0lJSUFFRVFDQUFEd3NnQUJBUUMwRUFDeThCQVg4Z0FBUkFJQUFvQWdRaUFRUkFJQUFvQWdBZ0FSRUNBQXNnQUNnQ0lCQVFJQUJCQURZQ0lDQUFFQkFMQ3lvQUlBQUVRQ0FBS0FJd0lBQkJGRUVRSUFBb0Frd2JhaWdDQUJFQ0FDQUFRUUEyQWpBZ0FCQVFDd3RUQVFKL0lBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUFLQUlBSUFBb0Fod1JDZ0FoQkNBQUtBSkVJUUlnQkVVRVFDQUFJQUpCQkhJMkFrUkJBQThMSUFBZ0FUY0RPQ0FBSUFKQmUzRTJBa1JCQVF1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRZFBrQUNBREVBOUJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkJtT1VBSUFOQkVHb1FEMEVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUduTTBFQUVBOExJQU5CSUdva0FDQUNDOWNHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRUM0Z0FDZ0NEQkFRSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBUUlBQkNBRGNERUFzZ0FDZ0NRQkFRSUFCQ0FEY0NQQXdCQ3lBQUtBSXNJZ0VFUUNBQkVCQWdBRUVBTmdJc0N5QUFLQUlnSWdFRVFDQUJFQkFnQUVJQU53TWdDeUFBS0FJMElnRkZEUUFnQVJBUUlBQkNBRGNDTkFzZ0FDZ0MwQUVRVlNBQUtBS2NBU0lCQkVBZ0FDZ0NhQ0FBS0FKc2JDSURCSDhEUUNBQkVDNGdBVUdNTEdvaEFTQUNRUUZxSWdJZ0EwY05BQXNnQUNnQ25BRUZJQUVMRUJBZ0FFRUFOZ0tjQVFzZ0FDZ0NkQ0lCQkVBZ0FDZ0NjQ0lDQkVCQkFDRUJBMEFnQUNnQ2RDQUJRUU4wYWlnQ0FDSURCRUFnQXhBUUlBQW9BbkFoQWdzZ0FVRUJhaUlCSUFKSkRRQUxJQUFvQW5RaEFRc2dBRUVBTmdKd0lBRVFFQ0FBUVFBMkFuUUxJQUFvQW9nQkVCQWdBRUVBTmdKNElBQkJBRFlDaUFFZ0FDZ0NaQkFRSUFCQkFEWUNaQ0FBTFFDOEFVRUNjVVVFUUNBQUtBS29BUkFRQ3lBQVFkQUFha0VBUWZBQUVCVWFJQUFvQXNBQkVESWdBRUVBTmdMQUFTQUFLQUxFQVJBeUlBQkJBRFlDd0FFZ0FDZ0N5QUVpQVFSQUlBRW9BaHdpQWdSQUlBSVFFQ0FCUVFBMkFod0xJQUVvQWlnaUFnUkFJQUVvQWlRRVFBTkFJQUlnQlVFb2JDSURhaWdDSkNJRUJFQWdCQkFRSUFFb0FpZ2lBaUFEYWtFQU5nSWtDeUFDSUFOcUtBSVFJZ1FFUUNBRUVCQWdBU2dDS0NJQ0lBTnFRUUEyQWhBTElBSWdBMm9vQWhnaUJBUkFJQVFRRUNBQktBSW9JZ0lnQTJwQkFEWUNHQXNnQlVFQmFpSUZJQUVvQWlSSkRRQUxDeUFDRUJBZ0FVRUFOZ0lvQ3lBQkVCQUxJQUJCQURZQ3lBRWdBQ2dDU0JBaElBQkJBRFlDU0NBQUtBSk1FQ0VnQUVFQU5nSk1JQUFvQXRRQklnTUVRQUpBSUFNb0FnaEZEUUFnQXlnQ0RBUkFJQU5CQURZQ0tBTkFJQU1vQWhoQkFFb05BQXNMSUFOQkFUWUNFQ0FES0FJQUVCQWdBeWdDSENJQ1JRMEFBMEFnQWlnQ0JDRUJJQUlRRUNBRElBRTJBaHdnQVNJQ0RRQUxDeUFES0FJa0lnSUVRQ0FDS0FJRUlnVkJBRW9FUUVFQUlRRURRQ0FDS0FJQUlBRkJER3hxSWdRb0FnZ2lCZ1JBSUFRb0FnUWdCaEVDQUNBQ0tBSUVJUVVMSUFGQkFXb2lBU0FGU0EwQUN3c2dBaWdDQUJBUUlBSVFFQXNnQXhBUUN5QUFRUUEyQXRRQklBQVFFQXNMNWdNQ0NIOEVmaUFBS0FJVUtBSUFLQUlVSUFGQnpBQnNhaUlKS0FJTUlnZ2dBQ2dDR0NnQ0dDQUJRVFJzYWlJS05RSUVJaEJDQVgwaUVpQUFOUUk4ZkNBUWdLY2lDeUFJSUF0Skd5RU1JQWtvQWdnaUNDQUtOUUlBSWhGQ0FYMGlFeUFBTlFJNGZDQVJnS2NpQ2lBSUlBcEpHeUVLSUFrb0FnUWlDQ0FTSUFBMUFqUjhJQkNBcHlJTElBZ2dDMHNiSVFzZ0NTZ0NBQ0lJSUJNZ0FEVUNNSHdnRVlDbklnMGdDQ0FOU3hzaERVRUFJUWdnQUNnQ0lDZ0MwQ3NnQVVHNENHeHFLQUlVSVE0Q1FDQUpLQUlVUVFBZ0FtdEJmeUFDRzJvaUFrVUVRQ0FLSVFBZ0RTRUlJQXNoQVF3QkN5QURRUUZ4SUFKQkFXc2lEM1FpQ1NBTlNRUkFJQTBnQ1d1dFFuOGdBcTBpRUlaQ2Y0VjhJQkNJcHlFSUMwRUFJUUJCQUNFQklBTkJBWFlnRDNRaUF5QUxTUVJBSUFzZ0EydXRRbjhnQXEwaUVJWkNmNFY4SUJDSXB5RUJDeUFKSUFwSkJFQWdDaUFKYTYxQ2Z5QUNyU0lRaGtKL2hYd2dFSWluSVFBTElBTWdERThFUUVFQUlRd01BUXNnRENBRGE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRd0xRWDhnQUVFQ1FRTWdEa0VCUmhzaUFtb2lBeUFBSUFOTEd5QUVTMEYvSUFJZ0RHb2lBQ0FBSUF4Skd5QUZTM0VnQ0NBQ2F5SUFRUUFnQUNBSVRSc2dCa2x4SUFFZ0Ftc2lBRUVBSUFBZ0FVMGJJQWRKY1F1aUFRRUdmeUFBQkVBZ0FDZ0NCQ0lDQkVBZ0FoQVFJQUJCQURZQ0JBc2dBUVJBSUFBaEFnTkFJQUlvQXNnQklnTUVRRUVBSVFVZ0FpZ0N4QUVpQkFSL0EwQWdBeWdDRENJR0JFQWdCaEFRSUFOQkFEWUNEQ0FDS0FMRUFTRUVDeUFEUVJCcUlRTWdCVUVCYWlJRklBUkpEUUFMSUFJb0FzZ0JCU0FEQ3hBUUlBSkJBRFlDeUFFTElBSkI4QUZxSVFJZ0IwRUJhaUlISUFGSERRQUxDeUFBRUJBTEM5VVpBaE4vQTNzZ0FDZ0NBQ0lLSUFBb0Fnd2lEVUVGZENJRmFpRUdJQW9nQldzaEZpQUFLQUlRSVFVZ0FDZ0NIQ0VMSUFBb0FoUWhDU0FBS0FJSUlRNENRQUpBQWtBQ1FDQURRUWhKRFFBZ0FVRVBjUTBBSUFaQkQzRkZEUUVMSUFVZ0NVOE5BZ0pBQWtBZ0EwRUJhdzRDQUFFREN3SkFJQWtnQldzaUNFRVlTUTBBSUFFZ0JVRUNkR29oQnlBTlFRVjBJZ1FnQ2lBRlFRWjBhbW9nQVNBSlFRSjBha2tFUUNBSElBb2dDVUVHZEdvZ0JHcEJQR3RKRFFFTElBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFWUlBVWdDRUY4Y1NJUGFpRUZRUUFoQkFOQUlBWWdHRUVFL2FzQkloZjlHd0JCQW5ScUlBY2dCRUVDZEdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUFaL1I4Qk9BSUFJQVlnRi8wYkFrRUNkR29nR2YwZkFqZ0NBQ0FHSUJmOUd3TkJBblJxSUJuOUh3TTRBZ0FnR1AwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRVlJQVJCQkdvaUJDQVBSdzBBQ3lBSUlBOUdEUVFMSUFVaEJDQUpJQVZyUVFOeElnY0VRRUVBSVFnRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQkVFQmFpRUVJQWhCQVdvaUNDQUhSdzBBQ3dzZ0JTQUphMEY4U3cwREEwQWdCaUFFUVFaMGFpQUJJQVJCQW5ScUtnSUFPQUlBSUFZZ0JFRUJhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFZZ0JFRUNhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFZZ0JFRURhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFSQkJHb2lCQ0FKUncwQUN3d0RDeUFCSUFKQkFuUnFJUWdDUUNBSklBVnJJZzlCUEVrRVFDQUZJUVFNQVFzZ0NpQUZRUVowSUExQkJYUnFhaUlFSUFrZ0JVRi9jMm9pQjBFR2RDSVFhaUFFU1FSQUlBVWhCQXdCQ3lBRVFRUnFJZ1FnRUdvZ0JFa0VRQ0FGSVFRTUFRc2dCMEgvLy84ZlN3UkFJQVVoQkF3QkN5QU5RUVYwSWdRZ0NpQUZRUVowYW1vaUJ5QUJJQUlnQ1dwQkFuUnFTU0FLSUFsQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4QkVBZ0JTRUVEQUVMSUFjZ0FTQUpRUUowYWtrZ0FTQUZRUUowYWlBRVNYRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklSZ2dCU0FQUVh4eEloQnFJUVJCQUNFSEEwQWdCaUFZUVFUOXF3RWlGLzBiQUVFQ2RHb2lFU0FCSUFVZ0IycEJBblFpREdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUlUSUJuOUh3RTRBZ0FnQmlBWC9Sc0NRUUowYWlJVUlCbjlId0k0QWdBZ0JpQVgvUnNEUVFKMGFpSVZJQm45SHdNNEFnQWdFU0FJSUF4cS9RQUNBQ0lYL1I4QU9BSUVJQk1nRi8wZkFUZ0NCQ0FVSUJmOUh3STRBZ1FnRlNBWC9SOERPQUlFSUJqOURBUUFBQUFFQUFBQUJBQUFBQVFBQUFEOXJnRWhHQ0FIUVFScUlnY2dFRWNOQUFzZ0R5QVFSZzBEQ3lBRVFRRnFJUVVnQ1NBRWEwRUJjUVJBSUFZZ0JFRUdkR29pQnlBQklBUkJBblFpQkdvcUFnQTRBZ0FnQnlBRUlBaHFLZ0lBT0FJRUlBVWhCQXNnQlNBSlJnMENBMEFnQmlBRVFRWjBhaUlGSUFFZ0JFRUNkQ0lIYWlvQ0FEZ0NBQ0FGSUFjZ0NHb3FBZ0E0QWdRZ0JpQUVRUUZxSWdWQkJuUnFJZ2NnQVNBRlFRSjBJZ1ZxS2dJQU9BSUFJQWNnQlNBSWFpb0NBRGdDQkNBRVFRSnFJZ1FnQ1VjTkFBc01BZ3NnQlNBSlR3MEJJQUVnQWtFQ2RHb2hDQU5BSUFZZ0JVRUdkR29pQkNBQklBVkJBblJxS2dJQU9BSUFJQVFnQVNBQ0lBVnFJZ2RCQW5ScUtnSUFPQUlFSUFRZ0FTQUNJQWRxSWdkQkFuUnFLZ0lBT0FJSUlBUWdBU0FDSUFkcUlnZEJBblJxS2dJQU9BSU1JQVFnQVNBQ0lBZHFJZ2RCQW5ScUtnSUFPQUlRSUFRZ0FTQUNJQWRxSWdkQkFuUnFLZ0lBT0FJVUlBUWdBU0FDSUFkcVFRSjBJZ2RxS2dJQU9BSVlJQVFnQnlBSWFpb0NBRGdDSENBRlFRRnFJZ1VnQ1VjTkFBc01BUXNnQVNBQ1FRSjBhaUVJSUFOQkEwWWhCeUFEUVFSR0lROGdBMEVGUmlFUUlBTkJCMFloRVFOQUlBWWdCVUVHZEdvaUJDQUJJQVZCQW5ScUtnSUFPQUlBSUFRZ0FTQUNJQVZxSWd4QkFuUnFLZ0lBT0FJRUlBUWdBU0FDSUF4cUlneEJBblJxS2dJQU9BSUlBa0FnQncwQUlBUWdBU0FDSUF4cUlneEJBblJxS2dJQU9BSU1JQThOQUNBRUlBRWdBaUFNYWlJTVFRSjBhaW9DQURnQ0VDQVFEUUFnQkNBQklBSWdER29pREVFQ2RHb3FBZ0E0QWhRZ0EwRUdSZzBBSUFRZ0FTQUNJQXhxUVFKMElneHFLZ0lBT0FJWUlCRU5BQ0FFSUFnZ0RHb3FBZ0E0QWh3TElBVkJBV29pQlNBSlJ3MEFDd3NnRmtFZ2FpRUdJQUVnRGtFQ2RHb2hCQ0FBS0FJWUlRVUNRQUpBQWtBZ0EwRUlTUTBBSUFSQkQzRU5BQ0FHUVE5eFJRMEJDeUFGSUF0UERRRUNRQUpBQWtBZ0EwRUJhdzRDQUFFQ0N3SkFJQXNnQldzaUFFRWNTUTBBSUFvZ0JVRUdkRUVnY2lBTlFRVjBJZ0pyYWlBQklBc2dEbXBCQW5ScVNRUkFJQUVnQlNBT2FrRUNkR29nQzBFR2RDQUNheUFLYWtFY2Ewa05BUXNnQkNBRlFRSjBhaUVESUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VZSUFVZ0FFRjhjU0lCYWlFRlFRQWhBZ05BSUFZZ0dFRUUvYXNCSWhmOUd3QkJBblJxSUFNZ0FrRUNkR3I5QUFJQUlobjlId0E0QWdBZ0JpQVgvUnNCUVFKMGFpQVovUjhCT0FJQUlBWWdGLzBiQWtFQ2RHb2dHZjBmQWpnQ0FDQUdJQmY5R3dOQkFuUnFJQm45SHdNNEFnQWdHUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFWUlBSkJCR29pQWlBQlJ3MEFDeUFBSUFGR0RRUUxJQVVoQWlBTElBVnJRUU54SWdBRVFFRUFJUUVEUUNBR0lBSkJCblJxSUFRZ0FrRUNkR29xQWdBNEFnQWdBa0VCYWlFQ0lBRkJBV29pQVNBQVJ3MEFDd3NnQlNBTGEwRjhTdzBEQTBBZ0JpQUNRUVowYWlBRUlBSkJBblJxS2dJQU9BSUFJQVlnQWtFQmFpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQVlnQWtFQ2FpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQVlnQWtFRGFpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQUpCQkdvaUFpQUxSdzBBQ3d3REN5QUVJQUpCQW5ScUlRTUNRQ0FMSUFWcklnQkJ4QUJKQkVBZ0JTRUNEQUVMSUFvZ0JVRUdkQ0lKUVNCeUlBMUJCWFFpQ0d0cUlnY2dDeUFGUVg5emFpSVBRUVowSWhCcUlBZEpCRUFnQlNFQ0RBRUxJQW9nQ1VFa2NpQUlhMm9pQ1NBUWFpQUpTUVJBSUFVaEFnd0JDeUFQUWYvLy94OUxCRUFnQlNFQ0RBRUxJQW9nQlVFR2RFRWdjaUFOUVFWMElnbHJhaUlOSUFFZ0N5QU9haUlJSUFKcVFRSjBha2tnQzBFR2RDQUpheUFLYWtFWWF5SUpJQUVnRGtFQ2RHb2dCVUVDZEdvaUNpQUNRUUowYWt0eEJFQWdCU0VDREFFTElBMGdBU0FJUVFKMGFra2dDU0FLUzNFRVFDQUZJUUlNQVFzZ0JmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVJnZ0JTQUFRWHh4SWdscUlRSkJBQ0VCQTBBZ0JpQVlRUVQ5cXdFaUYvMGJBRUVDZEdvaUNpQUVJQUVnQldwQkFuUWlEV3I5QUFJQUlobjlId0E0QWdBZ0JpQVgvUnNCUVFKMGFpSU9JQm45SHdFNEFnQWdCaUFYL1JzQ1FRSjBhaUlJSUJuOUh3STRBZ0FnQmlBWC9Sc0RRUUowYWlJSElCbjlId000QWdBZ0NpQURJQTFxL1FBQ0FDSVgvUjhBT0FJRUlBNGdGLzBmQVRnQ0JDQUlJQmY5SHdJNEFnUWdCeUFYL1I4RE9BSUVJQmo5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaEdDQUJRUVJxSWdFZ0NVY05BQXNnQUNBSlJnMERDeUFDUVFGcUlRQWdDeUFDYTBFQmNRUkFJQVlnQWtFR2RHb2lBU0FFSUFKQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEFnc2dBQ0FMUmcwQ0EwQWdCaUFDUVFaMGFpSUFJQVFnQWtFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQmlBQ1FRRnFJZ0JCQm5ScUlnRWdCQ0FBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FDUVFKcUlnSWdDMGNOQUFzTUFnc2dCQ0FDUVFKMGFpRUJJQU5CQTBZaENTQURRUVJHSVFvZ0EwRUZSaUVOSUFOQkIwWWhEZ05BSUFZZ0JVRUdkR29pQUNBRUlBVkJBblJxS2dJQU9BSUFJQUFnQkNBQ0lBVnFJZ2hCQW5ScUtnSUFPQUlFSUFBZ0JDQUNJQWhxSWdoQkFuUnFLZ0lBT0FJSUFrQWdDUTBBSUFBZ0JDQUNJQWhxSWdoQkFuUnFLZ0lBT0FJTUlBb05BQ0FBSUFRZ0FpQUlhaUlJUVFKMGFpb0NBRGdDRUNBTkRRQWdBQ0FFSUFJZ0NHb2lDRUVDZEdvcUFnQTRBaFFnQTBFR1JnMEFJQUFnQkNBQ0lBaHFRUUowSWdocUtnSUFPQUlZSUE0TkFDQUFJQUVnQ0dvcUFnQTRBaHdMSUFWQkFXb2lCU0FMUncwQUN3d0JDeUFGSUF0UERRQWdCQ0FDUVFKMGFpRUJBMEFnQmlBRlFRWjBhaUlBSUFRZ0JVRUNkR29xQWdBNEFnQWdBQ0FFSUFJZ0JXb2lBMEVDZEdvcUFnQTRBZ1FnQUNBRUlBSWdBMm9pQTBFQ2RHb3FBZ0E0QWdnZ0FDQUVJQUlnQTJvaUEwRUNkR29xQWdBNEFnd2dBQ0FFSUFJZ0Eyb2lBMEVDZEdvcUFnQTRBaEFnQUNBRUlBSWdBMm9pQTBFQ2RHb3FBZ0E0QWhRZ0FDQUVJQUlnQTJwQkFuUWlBMm9xQWdBNEFoZ2dBQ0FCSUFOcUtnSUFPQUljSUFWQkFXb2lCU0FMUncwQUN3c0xtd01CQkg4Z0FTQUFRUVJxSWdScVFRRnJRUUFnQVd0eElnVWdBbW9nQUNBQUtBSUFJZ0ZxUVFSclRRUi9JQUFvQWdRaUF5QUFLQUlJSWdZMkFnZ2dCaUFETmdJRUlBUWdCVWNFUUNBQUlBQkJCR3NvQWdCQmZuRnJJZ01nQlNBRWF5SUVJQU1vQWdCcUlnVTJBZ0FnQXlBRlFYeHhha0VFYXlBRk5nSUFJQUFnQkdvaUFDQUJJQVJySWdFMkFnQUxBbjhnQVNBQ1FSaHFUd1JBSUFBZ0FtcEJDR29pQXlBQklBSnJRUWhySWdFMkFnQWdBeUFCUVh4eGFrRUVheUFCUVFGeU5nSUFJQU1DZnlBREtBSUFRUWhySWdGQi93Qk5CRUFnQVVFRGRrRUJhd3dCQ3lBQlp5RUVJQUZCSFNBRWEzWkJCSE1nQkVFQ2RHdEI3Z0JxSUFGQi94OU5EUUFhUVQ4Z0FVRWVJQVJyZGtFQ2N5QUVRUUYwYTBISEFHb2lBU0FCUVQ5UEd3c2lBVUVFZENJRVFhREhBV28yQWdRZ0F5QUVRYWpIQVdvaUJDZ0NBRFlDQ0NBRUlBTTJBZ0FnQXlnQ0NDQUROZ0lFUWFqUEFVR296d0VwQXdCQ0FTQUJyWWFFTndNQUlBQWdBa0VJYWlJQk5nSUFJQUFnQVVGOGNXb01BUXNnQUNBQmFndEJCR3NnQVRZQ0FDQUFRUVJxQlVFQUN3dkNBUUVEZndKQUlBRWdBaWdDRUNJREJIOGdBd1VnQWhBK0RRRWdBaWdDRUFzZ0FpZ0NGQ0lFYTBzRVFDQUNJQUFnQVNBQ0tBSWtFUUFBRHdzQ1FBSkFJQUlvQWxCQkFFZ05BQ0FCUlEwQUlBRWhBd05BSUFBZ0Eyb2lCVUVCYXkwQUFFRUtSd1JBSUFOQkFXc2lBdzBCREFJTEN5QUNJQUFnQXlBQ0tBSWtFUUFBSWdRZ0Ewa05BaUFCSUFOcklRRWdBaWdDRkNFRURBRUxJQUFoQlVFQUlRTUxJQVFnQlNBQkVCSWFJQUlnQWlnQ0ZDQUJhallDRkNBQklBTnFJUVFMSUFRTFdRRUJmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJQUlnRkJDSEVFUUNBQUlBRkJJSEkyQWdCQmZ3OExJQUJDQURjQ0JDQUFJQUFvQWl3aUFUWUNIQ0FBSUFFMkFoUWdBQ0FCSUFBb0FqQnFOZ0lRUVFBTHpBSUJCSDhnQVNBQS9RQUNBUDBMQWdBZ0FTZ0NHQ0lDQkVBZ0FTZ0NFQ0lEQkg5QkFDRUNBMEFnQVNnQ0dDQUNRVFJzYWlnQ0xDSUVCRUFnQkJBUUlBRW9BaEFoQXdzZ0FrRUJhaUlDSUFOSkRRQUxJQUVvQWhnRklBSUxFQkFnQVVFQU5nSVlDeUFCSUFBb0FoQWlBallDRUNBQklBSkJOR3dRRkNJQ05nSVlJQUlFUUNBQktBSVFCRUJCQUNFREEwQWdBaUFEUVRSc0lnVnFJZ0lnQUNnQ0dDQUZhaUlFL1FBQ0FQMExBZ0FnQWlBRUtBSXdOZ0l3SUFJZ0JQMEFBaUQ5Q3dJZ0lBSWdCUDBBQWhEOUN3SVFJQUVvQWhnaUFpQUZha0VBTmdJc0lBTkJBV29pQXlBQktBSVFTUTBBQ3dzZ0FTQUFLQUlVTmdJVUlBRWdBQ2dDSUNJQ05nSWdJQUlFUUNBQklBSVFGQ0lDTmdJY0lBSkZCRUFnQVVJQU53SWNEd3NnQWlBQUtBSWNJQUFvQWlBUUVob1BDeUFCUVFBMkFod1BDeUFCUVFBMkFoQWdBVUVBTmdJWUN3UUFRUUVMeGdFQkEzOERRQ0FBUVFSMElnRkJwTWNCYWlBQlFhREhBV29pQWpZQ0FDQUJRYWpIQVdvZ0FqWUNBQ0FBUVFGcUlnQkJ3QUJIRFFBTFFUQVFiUm9qQUVFUWF5SUFKQUFDUUNBQVFReHFJQUJCQ0dvUURBMEFRYkRQQVVFSUlBQW9BZ3hCQW5SQkJHb1FKU0lCTmdJQUlBRkZEUUJCQ0NBQUtBSUlFQ1VpQVFSQVFiRFBBU2dDQUNJQ0lBQW9BZ3hCQW5ScVFRQTJBZ0FnQWlBQkVBdEZEUUVMUWJEUEFVRUFOZ0lBQ3lBQVFSQnFKQUJCek04QlFTbzJBZ0JCbE5BQlFkalFBVFlDQUF1UUJnSUZmd043SXdCQkVHc2lCaVFBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvTUFRc2dBQ2dDREFzaEFBSkFJQU1vQWdBaUJVVUVRRUVBSVFJZ0JFRUJRY0FUUVFBUUR3d0JDeUFBS0FMUUt5RUpJQU1nQlVFQmF6WUNBQ0FDSUFaQkRHcEJBUkFSSUFrZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRY1g0QUNBR0VBOGdCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRRVNBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMUVFBaEFpQURLQUlBSWdBZ0JVa05BeUFBSUFWckRBSUxJQWRCSEdvaEJFRUFJUUlEUUNBQUlBWkJER3BCQWhBUklBSkI0QUJOQkVBZ0JDQUNRUU4wYWlJRklBWW9BZ3dpQ0VIL0QzRTJBZ1FnQlNBSVFRdDJOZ0lBQ3lBQVFRSnFJUUFnQWtFQmFpSUNJQUZIRFFBTElBRkJBWFFMSVFCQkFDRUNJQU1vQWdBaUFTQUFTUTBCSUFFZ0FHc0xOZ0lBUVFFaEFpQUhLQUlZUVFGSERRQWdCMEVjYWlFRUlBZjlDUUljSVF3Z0J5Z0NJQ0VEL1F3QkFBQUFBZ0FBQUFNQUFBQUVBQUFBSVF0QkFDRUJBMEFnQkNBQlFRTjBhaUlBUVJocUlBd2dDLzBNLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzJ1QVNJSy9Sc0FRUU51L1JFZ0N2MGJBVUVEYnYwY0FTQUsvUnNDUVFOdS9Sd0NJQXI5R3dOQkEyNzlIQVA5c1FIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOXVBRWlDdjFhQWdBQ0lBQkJFR29nQ3YxYUFnQUJJQUJCQ0dvZ0N2MWFBZ0FBSUFRZ0FVRUVhaUlCUVFOMGFpSUZJQXI5V2dJQUF5QUFJQU0yQWh3Z0FDQUROZ0lVSUFBZ0F6WUNEQ0FGSUFNMkFnUWdDLzBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFTElBRkI0QUJIRFFBTEN5QUdRUkJxSkFBZ0FndWZCZ0VHZnlNQVFTQnJJZ1lrQUFKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElRVUNRQ0FES0FJQVFRUk5CRUJCQUNFQUlBUkJBVUdkRTBFQUVBOE1BUXNnQWlBRktBTFFLeUFCUWJnSWJHb2lCU0lKUVFScVFRRVFFU0FGSUFVb0FnUkJBV29pQnpZQ0JDQUhRU0pQQkVBZ0JrRWhOZ0lFSUFZZ0J6WUNBQ0FFUVFGQitUa2dCaEFQUVFBaEFBd0JDeUFISUFBb0FxQUJJZ2hOQkVBZ0JpQUhOZ0lZSUFZZ0NEWUNGQ0FHSUFFMkFoQWdCRUVCUWJUN0FDQUdRUkJxRUE4Z0FDQUFLQUlJUVlDQUFuSTJBZ2hCQUNFQURBRUxJQUpCQVdvZ0JVRUlha0VCRUJFZ0JTQUZLQUlJUVFKcU5nSUlJQUpCQW1vZ0JVRU1ha0VCRUJFZ0JTQUZLQUlNUVFKcUlnQTJBZ3dDUUFKQUlBVW9BZ2dpQVVFS1N3MEFJQUJCQ2tzTkFDQUFJQUZxUVExSkRRRUxRUUFoQUNBRVFRRkJ3eWxCQUJBUERBRUxJQUpCQTJvZ0JVRVFha0VCRUJFZ0JTMEFFRUdBQVhFRVFFRUFJUUFnQkVFQlFZc3lRUUFRRHd3QkN5QUNRUVJxSUFWQkZHcEJBUkFSSUFVb0FoUkJBazhFUUVFQUlRQWdCRUVCUWNveFFRQVFEd3dCQ3lBRElBTW9BZ0JCQldzaUJ6WUNBRUVCSVFBZ0JTZ0NCQ0VCSUFVdEFBQkJBWEZGQkVBZ0FVVU5BU0FGUWJBSGFpRUJJQVZCckFacUlRSkJBQ0VGQTBBZ0FpQUZRUUowSWdCcVFRODJBZ0FnQUNBQmFrRVBOZ0lBUVFFaEFDQUZRUUZxSWdVZ0NTZ0NCRWtOQUFzTUFRc2dBU0FIVFFSQUFrQWdBVVVFUUVFQUlRRU1BUXNnQWtFRmFpQUdRUnhxUVFFUUVTQUZJQVlvQWh3aUFFRUVkallDc0FjZ0JTQUFRUTl4TmdLc0JpQUZLQUlFSWdGQkFrOEVRQ0FGUWJBSGFpRUhJQVZCckFacUlRZ2dBa0VHYWlFQVFRRWhCUU5BSUFBZ0JrRWNha0VCRUJFQ1FDQUdLQUljSWdGQkVFOEVRQ0FCUVE5eElnSU5BUXRCQUNFQUlBUkJBVUh3TFVFQUVBOE1CUXNnQ0NBRlFRSjBJZ3BxSUFJMkFnQWdCeUFLYWlBQlFRUjJOZ0lBSUFCQkFXb2hBQ0FGUVFGcUlnVWdDU2dDQkNJQlNRMEFDd3NnQXlnQ0FDRUhDeUFESUFjZ0FXczJBZ0JCQVNFQURBRUxRUUFoQUNBRVFRRkJuUk5CQUJBUEN5QUdRU0JxSkFBZ0FBdFNBQ0FCSUFBdEFBQTZBQWNnQVNBQUxRQUJPZ0FHSUFFZ0FDMEFBam9BQlNBQklBQXRBQU02QUFRZ0FTQUFMUUFFT2dBRElBRWdBQzBBQlRvQUFpQUJJQUF0QUFZNkFBRWdBU0FBTFFBSE9nQUFDNUlCQVFSL0lBQWdBVFlDb0FFQ1FDQUFLQUpJSWdORkRRQWdBeWdDR0NJR1JRMEFJQUFvQWd3aUJFVU5BQ0FFS0FMUUswVU5BQ0FES0FJUUlnUkZCRUJCQVE4TFFRQWhBd05BSUFFZ0FDZ0NEQ2dDMENzZ0EwRzRDR3hxS0FJRVR3UkFJQUpCQVVHaXhRQkJBQkFQUVFBUEN5QUdJQU5CTkd4cUlBRTJBaWhCQVNFRklBTkJBV29pQXlBRVJ3MEFDd3NnQlF1c0J3SUpmd2grSXdCQkVHc2lDaVFBQWtBZ0FrVUVRQ0FEUVFGQit0VUFRUUFRRHd3QkN5QUNLQUlRSWdzZ0FDZ0NTQ0lHS0FJUVNRUkFJQU5CQVVHMXpnQkJBQkFQREFFTElBUWdBQ2dDYUNJRklBQW9BbXhzSWdkUEJFQWdDaUFFTmdJQUlBb2dCMEVCYXpZQ0JDQURRUUZCOS9vQUlBb1FEMEVBSVFVTUFRc2dBaUFBS0FKVUlBUWdCU0FFSUFWdUlnZHNheUlJSUFBb0FseHNhaUlGTmdJQUlBSWdCU0FHS0FJQUlnWWdCU0FHU3hzaUJqWUNBQ0FDSUFBb0FsUWdBQ2dDWENBSVFRRnFiR29pQlRZQ0NDQUNJQVVnQUNnQ1NDZ0NDQ0lJSUFVZ0NFa2JJZ2cyQWdnZ0FpQUFLQUpZSUFBb0FtQWdCMnhxSWdVMkFnUWdBaUFGSUFBb0FrZ29BZ1FpQ1NBRklBbExHeUlKTmdJRUlBSWdBQ2dDV0NBQUtBSmdJQWRCQVdwc2FpSUZOZ0lNSUFJZ0JTQUFLQUpJS0FJTUlnY2dCU0FIU1JzaUJUWUNEQ0FBS0FKSUlnd29BaEFpQndSQUlBV3NRZ0Y5SVJFZ0NLeENBWDBoRWlBSnJVSUJmU0VUSUFhdFFnRjlJUlFnRENnQ0dDRUlJQUlvQWhnaEJVRUFJUVlEUUNBRklBZ2dCa0UwYkdvb0FpZ2lDVFlDS0NBRklCUWdCU2dDQUNJTXJTSU9mQ0FPZ0NJVlBnSVFJQVVnRXlBRktBSUVJZzJ0SWc1OElBNkFJaEErQWhRZ0JVSi9JQW10SWc2R0lnOGdFTVI5SUE2SHB5QVBJQkVnRGF3aUVId2dFSC9FZlNBT2g2ZHJOZ0lNSUFVZ0R5QVZ4SDBnRG9lbklBOGdFaUFNckNJUGZDQVBmOFI5SUE2SHAyczJBZ2dnQlVFMGFpRUZJQVpCQVdvaUJpQUhSdzBBQ3dzZ0J5QUxTUVJBSUFJb0FoZ2hCUU5BSUFVZ0IwRTBiQ0lHYWlnQ0xCQVFJQUlvQWhnaUJTQUdha0VBTmdJc0lBZEJBV29pQnlBQ0tBSVFTUTBBQ3lBQ0lBQW9Ba2dvQWhBMkFoQUxJQUFvQWt3aUJRUkFJQVVRSVFzZ0FFRUJRU1FRRXlJSE5nSk1RUUFoQlNBSFJRMEFJQUlnQnhBL0lBQWdCRFlDTENBQUtBTEFBVUVYSUFNUUpFVU5BQ0FBS0FMQUFTSUVLQUlBSVFZZ0JDZ0NDQ0VIQWtBZ0JnUkFRUUVoQlNBR1FRRnhJUXNnQmtFQlJnUi9RUUFGSUFaQmZuRWhDRUVBSVFZRFFBSi9RUUFnQlVVTkFCcEJBQ0FBSUFFZ0F5QUhLQUlBRVFBQVJRMEFHaUFBSUFFZ0F5QUhLQUlFRVFBQVFRQkhDeUVGSUFkQkNHb2hCeUFHUVFKcUlnWWdDRWNOQUFzZ0JVRUJjd3NoQmdKQUFrQWdDd1JBSUFZTkFTQUFJQUVnQXlBSEtBSUFFUUFBUVFCSElRVUxJQVJCQURZQ0FDQUZRUUZ4UlEwQkRBTUxJQVJCQURZQ0FBc2dBQ2dDU0JBaFFRQWhCU0FBUVFBMkFrZ01BZ3NnQkVFQU5nSUFDeUFBSUFJUVJ5RUZDeUFLUVJCcUpBQWdCUXZ5QXdFRmZ3SkFBa0FnQUNnQ1BDSUNSUVJBSUFFb0FoQU5BVUVCRHdzZ0FrRTBiQkFVSWdWRkRRRWdBU2dDRUFSQUlBRW9BaGdoQWdOQUlBSWdBMEUwYkNJRWFpZ0NMQkFRSUFFb0FoZ2lBaUFFYWtFQU5nSXNJQU5CQVdvaUF5QUJLQUlRSWdSSkRRQUxDeUFCSUFBb0Fqd0VmeUFBS0FKTUtBSVlJUU5CQUNFQ0EwQWdCU0FDUVRSc2FpSUVJQU1nQUNnQ1FDQUNRUUowYWlnQ0FFRTBiQ0lHYWlJRC9RQUNBUDBMQWdBZ0JDQURLQUl3TmdJd0lBUWdBLzBBQWlEOUN3SWdJQVFnQS8wQUFoRDlDd0lRSUFRZ0FDZ0NUQ2dDR0NJRElBWnFJZ1lvQWlRMkFpUWdCQ0FHS0FJc05nSXNJQVpCQURZQ0xDQUNRUUZxSWdJZ0FDZ0NQQ0lHU1EwQUN5QUJLQUlRQlNBRUN3Ui9JQUFvQWt3b0FoZ2hBa0VBSVFNRFFDQUNJQU5CTkd3aUJHb29BaXdRRUNBQUtBSk1LQUlZSWdJZ0JHcEJBRFlDTENBRFFRRnFJZ01nQVNnQ0VFa05BQXNnQUNnQ1BBVWdCZ3MyQWhBZ0FTZ0NHQkFRSUFFZ0JUWUNHRUVCRHdzZ0FTZ0NHQ0VFSUFBb0Frd29BaGdoQTBFQUlRSURRQ0FFSUFKQk5Hd2lCV29pQkNBRElBVnFLQUlrTmdJa0lBUW9BaXdRRUNBQktBSVlJZ1FnQldvZ0FDZ0NUQ2dDR0NJRElBVnFJZ1VvQWl3MkFpd2dCVUVBTmdJc0lBSkJBV29pQWlBQktBSVFTUTBBQzBFQkR3c2dBQ2dDU0JBaElBQkJBRFlDU0VFQUM4NEVBUWgvQWtBZ0FrVU5BQUpBSUFBb0FxQUJJZ1ZGRFFBZ0FDZ0NTQ0lFUlEwQUlBUW9BaEJGRFFBZ0JDZ0NHQ2dDS0NBRlJ3MEFJQUlvQWhBaUNFVU5BQ0FDS0FJWUlnWW9BaWdOQUNBR0tBSXNEUUJCQUNFRUlBaEJDRThFUUNBSVFYaHhJUWtEUUNBR0lBUkJOR3hxSUFVMkFpZ2dCaUFFUVFGeVFUUnNhaUFGTmdJb0lBWWdCRUVDY2tFMGJHb2dCVFlDS0NBR0lBUkJBM0pCTkd4cUlBVTJBaWdnQmlBRVFRUnlRVFJzYWlBRk5nSW9JQVlnQkVFRmNrRTBiR29nQlRZQ0tDQUdJQVJCQm5KQk5HeHFJQVUyQWlnZ0JpQUVRUWR5UVRSc2FpQUZOZ0lvSUFSQkNHb2hCQ0FLUVFocUlnb2dDVWNOQUFzTElBaEJCM0VpQ0FSQUEwQWdCaUFFUVRSc2FpQUZOZ0lvSUFSQkFXb2hCQ0FMUVFGcUlnc2dDRWNOQUFzTElBSWdBeEEzRFFCQkFBOExJQUFvQWt3aUJVVUVRQ0FBUVFGQkpCQVRJZ1UyQWt3Z0JVVU5BUXNnQWlBRkVEOGdBQ2dDd0FGQkZpQURFQ1JGRFFBZ0FDZ0N3QUVpQmlnQ0FDRUVJQVlvQWdnaEJRSkFJQVFFUUVFQklRY2dCRUVCY1NFSUlBUkJBVVlFZjBFQUJTQUVRWDV4SVFsQkFDRUVBMEFDZjBFQUlBZEZEUUFhUVFBZ0FDQUJJQU1nQlNnQ0FCRUFBRVVOQUJvZ0FDQUJJQU1nQlNnQ0JCRUFBRUVBUndzaEJ5QUZRUWhxSVFVZ0JFRUNhaUlFSUFsSERRQUxJQWRCQVhNTElRUUNRQUpBSUFnRVFDQUVEUUVnQUNBQklBTWdCU2dDQUJFQUFFRUFSeUVIQ3lBR1FRQTJBZ0FnQjBFQmNVVU5BUXdEQ3lBR1FRQTJBZ0FMSUFBb0FrZ1FJU0FBUVFBMkFraEJBQThMSUFaQkFEWUNBQXNnQUNBQ0VFY2hCd3NnQnd2NEJBRUdmd0pBUVFGQk1CQVRJZ0lFZnlBQ0lBQW9Bc2dCSWdIOUFBTUEvUXNEQUNBQ0lBRXBBeEEzQXhBZ0FpQUJLQUlZSWdFMkFoZ2dBaUFCUVJoc0VCUWlBVFlDSENBQlJRUkFJQUlRRUVFQUR3c0NRQ0FBS0FMSUFTZ0NIQ0lEQkVBZ0FTQURJQUlvQWhoQkdHd1FFaG9NQVFzZ0FSQVFJQUpCQURZQ0hBc2dBaUFBS0FMSUFTZ0NKQ0lCTmdJa0lBSWdBVUVvRUJNaUFUWUNLQ0FCUlFSQUlBSW9BaHdRRUNBQ0VCQkJBQThMQWtBZ0FDZ0N5QUVvQWlnRVFDQUNLQUlrUlEwQkEwQWdBU0FGUVNoc0lnTnFJQUFvQXNnQktBSW9JQU5xS0FJVUlnRTJBaFFnQVVFWWJCQVVJUUVnQWlnQ0tDSUVJQU5xSWdZZ0FUWUNHQ0FCUlFSQUlBVUVmMEVBSVFFRFFDQUNLQUlvSUFGQktHeHFLQUlZRUJBZ0FVRUJhaUlCSUFWSERRQUxJQUlvQWlnRklBUUxFQkFNQlFzQ1FDQUFLQUxJQVNnQ0tDQURhaWdDR0NJRUJFQWdBU0FFSUFZb0FoUkJHR3dRRWhvZ0FpZ0NLQ0VCREFFTElBRVFFQ0FDS0FJb0lnRWdBMnBCQURZQ0dBc2dBU0FEYWlBQUtBTElBU2dDS0NBRGFpZ0NCQ0lCTmdJRUlBRkJHR3dRRkNFQklBSW9BaWdpQkNBRGFpSUdJQUUyQWhBZ0FVVUVRQ0FGQkg5QkFDRUJBMEFnQVVFb2JDSUFJQUlvQWlocUtBSVlFQkFnQWlnQ0tDQUFhaWdDRUJBUUlBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFRREFVTEFrQWdBQ2dDeUFFb0FpZ2dBMm9vQWhBaUJBUkFJQUVnQkNBR0tBSUVRUmhzRUJJYUlBSW9BaWdoQVF3QkN5QUJFQkFnQWlnQ0tDSUJJQU5xUVFBMkFoQUxJQUVnQTJwQ0FEY0NJQ0FGUVFGcUlnVWdBaWdDSkVrTkFBc01BUXNnQVJBUUlBSkJBRFlDS0FzZ0FnVkJBQXNQQ3lBQ0tBSWNFQkFnQWhBUVFRQUxvQVlDRG44QmV5TUFRUkJySWdna0FDQUFLQUpJS0FJUUlRMGdDRUVCUVRnUUV5SUJOZ0lNQWtBZ0FVVU5BQ0FCSUFBb0FrZ29BaEFpQ1RZQ0dDQUJJQUQ5QUFKVS9Rc0NBQ0FCSUFBb0FtZzJBaEFnQUNnQ2JDRUNJQUZCQURZQ05DQUJJQUkyQWhRZ0FTQUFLQUlNSWd3b0FnQTJBaUFnQVNBTUtBSUVOZ0lrSUFFZ0RDZ0NDRFlDS0NBQklBd29BaEEyQWl3Z0FTQUpRYmdJRUJNaUFEWUNNQ0FBQkVBZ0RRUkFBMEFnRGtHNENHd2lBQ0FCS0FJd2FpSUZJQXdvQXRBcklBQnFJZ1Q5QUFJQUlnLzlDd0lFSUFVZ0JDZ0NFRFlDRkNBRklBUW9BaFEyQWhnZ0QvMGJBU0lBUVNCTkJFQWdCVUcwQjJvZ0JFR3dCMm9nQUJBU0dpQUZRYkFHYWlBRVFhd0dhaUFFS0FJRUVCSWFDeUFGSUFRb0FoZ2lBRFlDSENBRklBUW9BcVFHTmdLb0JrRUJJUVlDUUNBQVFRRkhCRUFnQkNnQ0JFRURiQ0lBUVFOclFkOEFTdzBCSUFCQkFtc2hCZ3NnQlVHa0Eyb2hDU0FGUVNCcUlRb2dCRUVjYWlFTFFRQWhBQUpBSUFaQkNFa05BQ0FFSUFaQkEzUnFRUnhxSUFwTEJFQWdDeUFGSUFaQkFuUnFRYVFEYWtrTkFRc2dCa0Y4Y1NFQVFRQWhBZ05BSUFvZ0FrRUNkQ0lEYWlBTElBSkJBM1JxSWdkQkhHb2dCMEVVYWlBSFFReHFJQWY5Q1FJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQURJQWxxSUFkQkdHb2dCMEVRYWlBSFFRaHFJQWY5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUNRUVJxSWdJZ0FFY05BQXNnQUNBR1JnMEJDeUFBUVFGeUlRTWdCa0VCY1FSQUlBb2dBRUVDZENJQ2FpQUxJQUJCQTNScUlnQW9BZ1EyQWdBZ0FpQUphaUFBS0FJQU5nSUFJQU1oQUFzZ0F5QUdSZzBBQTBBZ0NpQUFRUUowSWdKcUlBc2dBRUVEZEdvaUF5Z0NCRFlDQUNBQ0lBbHFJQU1vQWdBMkFnQWdDaUFBUVFGcUlnTkJBblFpQW1vZ0N5QURRUU4wYWlJREtBSUVOZ0lBSUFJZ0NXb2dBeWdDQURZQ0FDQUFRUUpxSWdBZ0JrY05BQXNMSUFVZ0JDZ0NxQVkyQXF3R0lBNUJBV29pRGlBTlJ3MEFDd3NnQVNFRERBRUxJQWhCREdvRVFDQUlLQUlNSWdFb0FqQWlBQVIvSUFBUUVDQUlLQUlNQlNBQkN4QVFJQWhCQURZQ0RBc0xJQWhCRUdva0FDQURDL2tFQVFoL0l3QkJnQUpySWdNa0FDQUFCRUJCL0F4QkVTQUNFQjBnQXlBQUtBSUFOZ0x3QVNBQ1Fab1JJQU5COEFGcUVCWWdBeUFBS0FJRU5nTGdBU0FDUWFjUklBTkI0QUZxRUJZZ0F5QUFLQUlJTmdMUUFTQUNRWUkzSUFOQjBBRnFFQllnQXlBQUtBSVFOZ0xBQVNBQ1FmMFFJQU5Cd0FGcUVCWWdBVUVBU2dSQUEwQWdBQ2dDMENzaEJDQURJQWMyQXJBQklBSkJvZzBnQTBHd0FXb1FGaUFESUFRZ0IwRzRDR3hxSWdRb0FnQTJBcUFCSUFKQm1SRWdBMEdnQVdvUUZpQURJQVFvQWdRMkFwQUJJQUpCOURjZ0EwR1FBV29RRmlBRElBUW9BZ2cyQW9BQklBSkJvRFlnQTBHQUFXb1FGaUFESUFRb0FndzJBbkFnQWtHd05pQURRZkFBYWhBV0lBTWdCQ2dDRURZQ1lDQUNRWWdSSUFOQjRBQnFFQllnQXlBRUtBSVVOZ0pRSUFKQnRqZ2dBMEhRQUdvUUZrSFZDMEVYSUFJUUhTQUVLQUlFQkVBZ0JFR3dCMm9oQmlBRVFhd0dhaUVJUVFBaEJRTkFJQWdnQlVFQ2RDSUphaWdDQUNFS0lBTWdCaUFKYWlnQ0FEWUNSQ0FESUFvMkFrQWdBa0dMRENBRFFVQnJFQllnQlVFQmFpSUZJQVFvQWdSSkRRQUxDeUFDRUc0Z0F5QUVLQUlZTmdJd0lBSkJ3RFlnQTBFd2FoQVdJQU1nQkNnQ3BBWTJBaUFnQWtIeE5pQURRU0JxRUJaQkFTRUdRZTBMUVJRZ0FoQWRBa0FnQkNnQ0dFRUJSd1JBSUFRb0FnUWlCVUVBVEEwQklBVkJBMnhCQW1zaEJnc2dCRUVjYWlFSVFRQWhCUU5BSUFNZ0NDQUZRUU4wYWlrQ0FFSWdpVGNERUNBQ1FZc01JQU5CRUdvUUZpQUZRUUZxSWdVZ0JrY05BQXNMSUFJUWJpQURJQVFvQXFnR05nSUFJQUpCNERZZ0F4QVdRWmtNUVFVZ0FoQWRJQWRCQVdvaUJ5QUJSdzBBQ3d0Qm1neEJCQ0FDRUIwTElBTkJnQUpxSkFBTDVnb0RDWDhCZXdGK0l3QkJzQUZySWdVa0FBSkFJQUZCZ0FOeEJFQkJuaTFCQ3lBQ0VCME1BUXNDUUNBQlFRRnhSUTBBSUFBb0FrZ2lCa1VOQUNNQVFkQUFheUlESkFCQjdneEJEU0FDRUIwZ0EwRUFPZ0JQSUFOQkNUb0FUaUFESUFZcEFnQTNBa1FnQXlBRFFjNEFhaUlFTmdKQUlBSkJoamtnQTBGQWF4QVdJQU1nQmlrQ0NEY0NOQ0FESUFRMkFqQWdBa0gxT0NBRFFUQnFFQllnQXlBR0tBSVFOZ0lrSUFNZ0JEWUNJQ0FDUVpNM0lBTkJJR29RRmdKQUlBWW9BaGhGRFFBZ0JpZ0NFRVVOQUFOQUlBTWdBMEhPQUdvaUNqWUNFQ0FESUFjMkFoUWdBa0dPRFNBRFFSQnFFQllnQmlnQ0dDQUhRVFJzYWlFSUl3QkJNR3NpQkNRQUlBUkJDVHNBTGlBRVFRazZBQzBnQkNBSUtRSUFOd0lrSUFRZ0JFRXRhaUlKTmdJZ0lBSkJ6ellnQkVFZ2FoQVdJQVFnQ0NnQ0dEWUNGQ0FFSUFrMkFoQWdBa0hGT0NBRVFSQnFFQllnQkNBSUtBSWdOZ0lFSUFRZ0NUWUNBQ0FDUWFvNElBUVFGaUFFUVRCcUpBQWdBeUFLTmdJQUlBSkJsQXdnQXhBV0lBZEJBV29pQnlBR0tBSVFTUTBBQ3d0Qm5BeEJBaUFDRUIwZ0EwSFFBR29rQUFzQ1FDQUJRUUp4UlEwQUlBQW9Ba2hGRFFCQitRMUJKQ0FDRUIwZ0JTQUFLUUpVTndPZ0FTQUNRZWNSSUFWQm9BRnFFQllnQlNBQUtRSmNOd09RQVNBQ1FjVVJJQVZCa0FGcUVCWWdCU0FBS1FOb053T0FBU0FDUWRjUklBVkJnQUZxRUJZZ0FDZ0NEQ0FBS0FKSUtBSVFJQUlRUzBHY0RFRUNJQUlRSFFzQ1FDQUJRUWh4UlEwQUlBQW9Ba2hGRFFBZ0FDZ0NhQ0FBS0FKc2JDSUVSUTBBSUFBb0Fwd0JJUU1EUUNBRElBQW9Ba2dvQWhBZ0FoQkxJQU5CakN4cUlRTWdDMEVCYWlJTElBUkhEUUFMQ3lBQlFSQnhSUTBBSUFBb0FzZ0JJUUZCMHcxQkpTQUNFQjBnQlNBQi9RQURBUDBMQkhBZ0FrSEpLeUFGUWZBQWFoQVdRY0VOUVJFZ0FoQWRBa0FnQVNnQ0hFVU5BQ0FCS0FJWVJRMEFRUUFoQXdOQUlBRW9BaHdnQTBFWWJHb2lBQzhCQUNFRUlBQXBBd2doRFNBRklBQW9BaEEyQW1BZ0JTQU5Od05ZSUFVZ0JEWUNVQ0FDUVlzNElBVkIwQUJxRUJZZ0EwRUJhaUlESUFFb0FoaEpEUUFMQzBHYURFRUVJQUlRSFFKQUlBRW9BaWdpQkVVTkFDQUJLQUlrSWdkRkRRQkJBQ0VEUVFBaEFBSkFJQWRCQkU4RVFDQUhRWHh4SVFBRFFDQUVJQU5CQTNKQktHeHFRUVJxSUFRZ0EwRUNja0VvYkdwQkJHb2dCQ0FEUVFGeVFTaHNha0VFYWlBRUlBTkJLR3hxL1FrQ0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBTS9hNEJJUXdnQTBFRWFpSURJQUJIRFFBTElBd2dEQ0FNL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2E0Qklnd2dEQ0FNL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2E0Qi9Sc0FJUU1nQUNBSFJnMEJDd05BSUFRZ0FFRW9iR29vQWdRZ0Eyb2hBeUFBUVFGcUlnQWdCMGNOQUFzTElBTkZEUUJCc0ExQkVDQUNFQjBnQVNnQ0pBUkFJQUVvQWlnaEFFRUFJUWNEUUNBRklBQWdCMEVvYkNJRWFpZ0NCQ0lHTmdKRUlBVWdCellDUUNBQ1FkRTRJQVZCUUdzUUZpQUJLQUlvSVFBQ1FDQUdSUTBBUVFBaEF5QUFJQVJxS0FJUVJRMEFBMEFnQVNnQ0tDQUVhaWdDRUNBRFFSaHNhaUlBL1FBREFDRU1JQVVnQUNrREVEY0RPQ0FGSUF6OUN3TW9JQVVnQXpZQ0lDQUNRYVhSQUNBRlFTQnFFQllnQTBFQmFpSURJQVpIRFFBTElBRW9BaWdoQUFzQ1FDQUFJQVJxSWdZb0FoaEZEUUJCQUNFRElBWW9BaFJGRFFBRFFDQUFJQVJxS0FJWUlBTkJHR3hxSWdBdkFRQWhCaUFBS1FNSUlRMGdCU0FBS0FJUU5nSVFJQVVnRFRjRENDQUZJQVkyQWdBZ0FrR0xPQ0FGRUJZZ0EwRUJhaUlESUFFb0FpZ2lBQ0FFYWlnQ0ZFa05BQXNMSUFkQkFXb2lCeUFCS0FJa1NRMEFDd3RCbWd4QkJDQUNFQjBMUVp3TVFRSWdBaEFkQ3lBRlFiQUJhaVFBQzQ4Q0FRTi9Ba0JCQVVIb0FSQVRJZ0VFZnlBQlFRRTJBZ0FnQVVFQk5nSzRBU0FCSUFFdEFMd0JRUVp5T2dDOEFTQUJRUUZCakN3UUV5SUFOZ0lNSUFCRkRRRWdBVUVCUWVnSEVCTWlBRFlDRUNBQVJRMEJJQUZDQURjRE1DQUJRWDgyQWl3Z0FVSG9CellDRkFKQVFRRkJNQkFUSWdBRVFDQUFRUUEyQWhnZ0FFSGtBRFlDSUNBQVFlUUFRUmdRRXlJQ05nSWNJQUlOQVNBQUVCQUxJQUZCQURZQ3lBRU1BZ3NnQUVFQU5nSW9JQUVnQURZQ3lBRWdBUkF6SWdBMkFzUUJJQUJGRFFFZ0FSQXpJZ0EyQXNBQklBQkZEUUVDUUJDUkFVVU5BQXNnQVVFQUVHWWlBRFlDMUFFZ0FFVUVRQ0FCUVFBUVppSUFOZ0xVQVNBQVJRMENDeUFCQlVFQUN3OExJQUVRT0VFQUM0MEpBZ2wvQVg0akFFSFFBV3NpQnlRQUlBQW9Ba2doQ1FKQUFrQUNRQ0FBS0FKb1FRRkhEUUFnQUNnQ2JFRUJSdzBBSUFBb0Fwd0JLQUxjS3cwQkN5QUFLQUlJUVFoR0RRQWdCa0VCUWVIT0FFRUFFQThNQVFzQ1FDQUJLQUlRSWd4RkRRQWdBQ2dDb0FFaENpQUJLQUlZSVFzZ0RFRUlUd1JBSUF4QmVIRWhEd05BSUFzZ0NFRTBiR29nQ2pZQ0tDQUxJQWhCQVhKQk5HeHFJQW8yQWlnZ0N5QUlRUUp5UVRSc2FpQUtOZ0lvSUFzZ0NFRURja0UwYkdvZ0NqWUNLQ0FMSUFoQkJISkJOR3hxSUFvMkFpZ2dDeUFJUVFWeVFUUnNhaUFLTmdJb0lBc2dDRUVHY2tFMGJHb2dDallDS0NBTElBaEJCM0pCTkd4cUlBbzJBaWdnQ0VFSWFpRUlJQTVCQ0dvaURpQVBSdzBBQ3dzZ0RFRUhjU0lNUlEwQUEwQWdDeUFJUVRSc2FpQUtOZ0lvSUFoQkFXb2hDQ0FOUVFGcUlnMGdERWNOQUFzTElBSWdBM0lnQkhJZ0JYSkZCRUFnQmtFRVFhOHdRUUFRRHlBQVFnQTNBaHdnQUNBQUtRSm9Od0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEEzSVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkJ4OTBBSUFjUUQwRUFJUWdNQVFzZ0FpQUpLQUlJSWdoTEJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkJtK0VBSUFkQkVHb1FEMEVBSVFnTUFRc0NRQ0FDSUFrb0FnQWlDRWtFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1FmdmpBQ0FIUWNBQmFoQVBJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FsUnJJQUFvQWx4dU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkJoOTBBSUFkQklHb1FEMEVBSVFnTUFRc2dBeUFKS0FJTUlnSkxCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCN3Q4QUlBZEJNR29RRDBFQUlRZ01BUXNDUUNBRElBa29BZ1FpQWtrRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRY3ppQUNBSFFiQUJhaEFQSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbGhySUFBb0FtQnVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFjWGNBQ0FIUVVCckVBOE1BUXNnQkNBSktBSUFJZ0pKQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQm91TUFJQWRCMEFCcUVBOE1BUXNDUUNBRUlBa29BZ2dpQWtzRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRY1BnQUNBSFFhQUJhaEFQSUFBZ0FDZ0NhRFlDSkNBSktBSUlJUVFNQVFzZ0FDQUFOUUpjSWhBZ0JDQUFLQUpVYTYxOFFnRjlJQkNBUGdJa0N5QUJJQVEyQWdnZ0JVRUFUQVJBSUFjZ0JUWUNZQ0FHUVFGQmd0d0FJQWRCNEFCcUVBOE1BUXNnQlNBSktBSUVJZ0pKQkVBZ0J5QUNOZ0owSUFjZ0JUWUNjQ0FHUVFGQjh1RUFJQWRCOEFCcUVBOE1BUXNDUUNBRklBa29BZ3dpQWtzRVFDQUhJQUkyQXBRQklBY2dCVFlDa0FFZ0JrRUNRWlhmQUNBSFFaQUJhaEFQSUFBZ0FDZ0NiRFlDS0NBSktBSU1JUVVNQVFzZ0FDQUFOUUpnSWhBZ0JTQUFLQUpZYTYxOFFnRjlJQkNBUGdJb0N5QUJJQVUyQWd3Z0FDQUFMUUJFUVFKeU9nQkVJQUVnQmhBM0lnaEZCRUJCQUNFSURBRUxJQWNnQWYwQUFnRDlDd1NBQVNBR1FRUkJ0RGtnQjBHQUFXb1FEd3NnQjBIUUFXb2tBQ0FJQzVVQ0FRZC9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1NDSUVSUVJBSUFOQkFVSEY1Z0JCQUJBUFFRQU1BUXRCQUVFRUlBUW9BaEFRRXlJRVJRMEFHaUFCQkVBZ0FDZ0NTQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQitSRWdCVUVRYWhBUERBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRWTBhSUFVUUR3c2dCQkFRUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBUUlBQW9Ba0FRRUFKQUlBRUVRQ0FBSUFGQkFuUWlCQkFVSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBU0dnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUVLSUFWQklHb2tBQ0FLQzd3RkFRZC9JQUZCQVVFa0VCTWlCRFlDU0FKQUFrQWdCRVVOQUFKQUlBRW9Bc1FCUVJJZ0F4QWtCRUFnQVNnQ3hBRkJFeUFERUNRTkFRc01BZ3NnQVNnQ3hBRWlCeWdDQUNFR0lBY29BZ2doQkFKQUlBWUVRRUVCSVFVZ0JrRUJSd1JBSUFaQmZuRWhDUU5BQW45QkFDQUZSUTBBR2tFQUlBRWdBQ0FESUFRb0FnQVJBQUJGRFFBYUlBRWdBQ0FESUFRb0FnUVJBQUJCQUVjTElRVWdCRUVJYWlFRUlBaEJBbW9pQ0NBSlJ3MEFDd3NDUUFKQUlBWkJBWEVFUUNBRlJRMEJJQUVnQUNBRElBUW9BZ0FSQUFCQkFFY2hCUXNnQjBFQU5nSUFJQVZGRFFFTUF3c2dCMEVBTmdJQUN3d0RDeUFIUVFBMkFnQUxBa0FnQVNnQ3dBRkJGQ0FERUNRRVFDQUJLQUxBQVVFVklBTVFKQTBCQ3d3Q0N5QUJLQUxBQVNJSEtBSUFJUVlnQnlnQ0NDRUVBa0FnQmdSQVFRRWhCU0FHUVFGeElRa2dCa0VCUmdSL1FRQUZJQVpCZm5FaEJrRUFJUWdEUUFKL1FRQWdCVVVOQUJwQkFDQUJJQUFnQXlBRUtBSUFFUUFBUlEwQUdpQUJJQUFnQXlBRUtBSUVFUUFBUVFCSEN5RUZJQVJCQ0dvaEJDQUlRUUpxSWdnZ0JrY05BQXNnQlVVTElRWUNRQUpBSUFrRVFDQUdEUUVnQVNBQUlBTWdCQ2dDQUJFQUFFRUFSeUVGQ3lBSFFRQTJBZ0FnQlVVTkFRd0RDeUFIUVFBMkFnQUxEQU1MSUFkQkFEWUNBQXNnQWtFQlFTUVFFeUlBTmdJQUlBQkZEUUFnQVNnQ1NDQUFFRDhnQVNnQ3lBRWdBU2dDYkNBQktBSm9iQ0lBTmdJa0lBQkJLQkFUSVFNZ0FTZ0N5QUVpQUNBRE5nSW9Ba0FnQTBVTkFDQUFLQUlrUlFSQVFRRVBDMEVBSVFRRFFDQURJQVJCS0d3aUJXb2lBRUVBTmdJVUlBQkI1QUEyQWh4QjVBQkJHQkFUSVFBZ0JTQUJLQUxJQVNJSEtBSW9JZ05xSUFBMkFoZ2dBRVVOQVVFQklRb2dCRUVCYWlJRUlBY29BaVJKRFFBTERBRUxJQUlvQWdBUUlVRUFJUW9nQWtFQU5nSUFDeUFLRHdzZ0FTZ0NTQkFoSUFGQkFEWUNTRUVBQ3dJQUN3UUFRUUVMTkFBQ1FDQUFSUTBBSUFGRkRRQWdBQ0FCS0FJRU5nS2tBU0FBSUFFb0FnQTJBcUFCSUFBZ0FTZ0N1RUJCQW5FMkF1QUJDd3UwQlFFSWZ5QUFLQUlZSWdRb0FoQWlDVVVFUUVFQUR3c2dCQ2dDR0NFRklBQW9BaFFvQWdBb0FoUWhCQUpBQWtBZ0FVVUVRRUVBSVFFRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVHTUFXc29BZ0FpQnlBQVFaUUJheWdDQUNJSWF5RURJQUJCa0FGcktBSUFJQUJCbUFGcktBSUFheUVBQWtBZ0J5QUlSZzBBSUFDdElBT3Rma0lnaUZBTkFBd0VDeUFBSUFOc0lRTUNRRUVFSUFKQkEzWWdBa0VIY1VFQVIyb2lBQ0FBUVFOR0d5SUNSUTBBSUFLdElBT3Rma0lnaUZBTkFBd0VDMEYvSVFBZ0FpQURiQ0lDSUFGQmYzTkxEUUlnQkVITUFHb2hCQ0FGUVRScUlRVWdBU0FDYWlJQklRQWdCa0VCYWlJR0lBbEhEUUFMREFFTFFRQWhBU0FBS0FKQVJRUkFBMEFnQlNnQ0dDRUNJQVFvQWh3Z0JDZ0NHRUdZQVd4cUlnQkJCR3NvQWdBaUJ5QUFRUXhyS0FJQUlnaHJJUU1nQUVFSWF5Z0NBQ0FBUVJCcktBSUFheUVBQWtBZ0J5QUlSZzBBSUFDdElBT3Rma0lnaUZBTkFBd0VDeUFBSUFOc0lRTUNRRUVFSUFKQkEzWWdBa0VIY1VFQVIyb2lBQ0FBUVFOR0d5SUNSUTBBSUFLdElBT3Rma0lnaUZBTkFBd0VDMEYvSVFBZ0FpQURiQ0lDSUFGQmYzTkxEUUlnQkVITUFHb2hCQ0FGUVRScUlRVWdBU0FDYWlJQklRQWdCa0VCYWlJR0lBbEhEUUFMREFFTEEwQWdCU2dDR0NFQ0lBUW9BaHdnQkNnQ0dFR1lBV3hxSWdCQmpBRnJLQUlBSWdjZ0FFR1VBV3NvQWdBaUNHc2hBeUFBUVpBQmF5Z0NBQ0FBUVpnQmF5Z0NBR3NoQUFKQUlBY2dDRVlOQUNBQXJTQURyWDVDSUloUURRQU1Bd3NnQUNBRGJDRURBa0JCQkNBQ1FRTjJJQUpCQjNGQkFFZHFJZ0FnQUVFRFJoc2lBa1VOQUNBQ3JTQURyWDVDSUloUURRQU1Bd3RCZnlFQUlBSWdBMndpQWlBQlFYOXpTdzBCSUFSQnpBQnFJUVFnQlVFMGFpRUZJQUVnQW1vaUFTRUFJQVpCQVdvaUJpQUpSdzBBQ3dzZ0FBOExRWDhMMmdRQkMzOGdBQVJBSUFBb0FoUWlBUVJBSUFFb0FnQWlCUVJBSUFVb0FoUWhBeUFGS0FJUUJIOUJFRUVSSUFBdEFDaEJBWEViSVFnRFFDQURLQUljSWdJRVFDQURLQUlnSWdGQm1BRnVJUXBCQUNFSklBRkJtQUZQQkg4RFFDQUNLQUl3SWdFRVFDQUNLQUkwSWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFwSUFGQkFEWUNJQ0FCS0FJa0VDa2dBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BakFGSUFFTEVCQWdBa0VBTmdJd0N5QUNLQUpVSWdFRVFDQUNLQUpZSWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFwSUFGQkFEWUNJQ0FCS0FJa0VDa2dBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BbFFGSUFFTEVCQWdBa0VBTmdKVUN5QUNLQUo0SWdFRVFDQUNLQUo4SWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFwSUFGQkFEWUNJQ0FCS0FJa0VDa2dBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BbmdGSUFFTEVCQWdBa0VBTmdKNEN5QUNRWmdCYWlFQ0lBbEJBV29pQ1NBS1J3MEFDeUFES0FJY0JTQUNDeEFRSUFOQkFEWUNIQXNDUUNBREtBSW9SUTBBSUFNb0FpUWlBVVVOQUNBQkVCQWdBLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWlRTElBTW9BalFRRUNBRFFjd0FhaUVESUF0QkFXb2lDeUFGS0FJUVNRMEFDeUFGS0FJVUJTQURDeEFRSUFWQkFEWUNGQ0FBS0FJVUtBSUFFQkFnQUNnQ0ZDSUJRUUEyQWdBTElBRVFFQ0FBUVFBMkFoUUxJQUFvQWtRUUVDQUFFQkFMQzhzVEFSVi9Jd0JCSUdzaUR5UUFJQThnQlRZQ0dDQUJJQU1vQWh4QnpBQnNhaWdDSENBREtBSWdRWmdCYkdvaEVRSkFBa0FnQXlnQ0tBMEFJQkVvQWhoRkRRQWdFVUVjYWlFSkEwQUNRQ0FKS0FJSUlBa29BZ0JIQkg4Z0NTZ0NEQ0FKS0FJRVJnVkJBUXNOQUNBREtBSWtJZ0VnQ1NnQ0dFRW9iazhFUUNBSVFRRkJnaFZCQUJBUERBUUxJQWtvQWhRZ0FVRW9iR29pQVNnQ0lCQmlJQUVvQWlRUVlpQUJLQUlVSUFFb0FoQnNJZzFGRFFBZ0FTZ0NHQ0VCSUExQkNFOEVRQ0FOUVhoeElRdEJBQ0VLQTBBZ0FVSUFOd0xvQXlBQlFnQTNBcWdESUFGQ0FEY0M2QUlnQVVJQU53S29BaUFCUWdBM0F1Z0JJQUZDQURjQ3FBRWdBVUlBTndKb0lBRkNBRGNDS0NBQlFZQUVhaUVCSUFwQkNHb2lDaUFMUncwQUN3dEJBQ0VLSUExQkIzRWlEVVVOQUFOQUlBRkNBRGNDS0NBQlFVQnJJUUVnQ2tFQmFpSUtJQTFIRFFBTEN5QUpRU1JxSVFrZ0RFRUJhaUlNSUJFb0FoaEpEUUFMQ3lBRklRMENRQ0FDTFFBQVFRSnhSUTBBSUFkQkJVMEVRQ0FJUVFKQnNSOUJBQkFQREFFTEFrQWdCUzBBQUVIL0FVWUVRQ0FGTFFBQlFaRUJSZzBCQ3lBSVFRSkIyeDlCQUJBUERBRUxJQThnQlVFR2FpSU5OZ0lZQzBFVUVCUWlDMFVOQUFKL0lBQXRBR3hCQVhFRVFDQUFRU2hxSVFjZ0FDZ0NLQ0VOSUFCQkxHb01BUXNnQWkwQWlDeEJBbkVFUUNBQ1FiQW9haUVISUFJb0FyQW9JUTBnQWtHOEtHb01BUXNnRHlBRklBZHFJQTFyTmdJY0lBOUJHR29oQnlBUFFSeHFDeUlTS0FJQUlRQWdDMElBTndJTUlBc2dEVFlDQ0NBTElBMDJBZ0FnQ3lBQUlBMXFOZ0lFSUF0QkFSQWZSUVJBSUFzUVpCb2dDeWdDQ0NBTEtBSUFheUVhSUFzUUxDQWFJQTFxSVFFQ1FDQUNMUUFBUVFSeFJRMEFJQWNvQWdBZ0VpZ0NBQ0FCYTJwQkFVMEVRQ0FJUVFKQm1DRkJBQkFQREFFTEFrQWdBUzBBQUVIL0FVWUVRQ0FCTFFBQlFaSUJSZzBCQ3lBSVFRSkJ3aUZCQUJBUERBRUxJQUZCQW1vaEFRc2dFaUFTS0FJQUlBY29BZ0FnQVd0cU5nSUFJQWNnQVRZQ0FDQUVRUUEyQWdBZ0JpQVBLQUlZSUFWck5nSUFRUUVoRnd3QkN5QVJLQUlZQkVBZ0VVRWNhaUVRQTBBZ0F5Z0NKQ0VBSUJBb0FoUWhBUUpBSUJBb0FnZ2dFQ2dDQUVjRWZ5QVFLQUlNSUJBb0FnUkdCVUVCQ3cwQUlBRWdBRUVvYkdvaUZDZ0NGQ0FVS0FJUWJDSVlSUTBBSUJRb0FoZ2hDVUVBSVJVRFFBSkFBbjhnQ1NnQ0tFVUVRQ0FMSUJRb0FpQWdGU0FES0FJb1FRRnFFR0FNQVFzZ0MwRUJFQjhMUlFSQUlBbEJBRFlDSkF3QkN5QUpLQUlvUlFSQVFRQWhBUU5BSUFFaUFFRUJhaUVCSUFzZ0ZDZ0NKQ0FWSUFBUVlFVU5BQXNnRUNnQ0hDRUJJQWxCQXpZQ0lDQUpJQUUyQWhnZ0NTQUJJQUJyUVFGcU5nSWNDeUFKQW45QkFTQUxRUUVRSDBVTkFCcEJBaUFMUVFFUUgwVU5BQm9nQzBFQ0VCOGlBRUVEUndSQUlBQkJBMm9NQVFzZ0MwRUZFQjhpQUVFZlJ3UkFJQUJCQm1vTUFRc2dDMEVIRUI5QkpXb0xOZ0lrUVFBaEFRTkFJQUVpQUVFQmFpRUJJQXRCQVJBZkRRQUxJQWtnQ1NnQ0lDQUFhallDSUFKQUFrQUNmeUFKS0FJb0lnQkZCRUFnQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFBZ0NTZ0NNRVVFUUNBSktBSUFRZkFCRUJjaUFVVU5CQ0FKSUFFMkFnQWdBU0FKS0FJd1FSaHNha0VBUWZBQkVCVWFJQWxCQ2pZQ01Bc2dDU2dDQUNJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQkJBVUVLUWUwQUlBQkJBWEViSUFCQkJIRWJJUXBCQUF3QkN5QUpLQUlBSWdFZ0FFRUJheUlNUVJoc2FpSUtLQUlFSUFvb0FneEhEUUVnQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFvZ0NTZ0NNQ0lNSUFCQkFXcEpCSDhnQVNBTVFRcHFJZ3hCR0d3UUZ5SUJSUTBESUFrZ0FUWUNBQ0FCSUFrb0FqQkJHR3hxUVFCQjhBRVFGUm9nQ1NBTU5nSXdJQWtvQWdBRklBRUxJQUJCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQUovUVFFZ0NrRUVjUTBBR2tIdEFDQUtRUUZ4UlEwQUdrRUNRUUpCQVNBQlFReHJLQUlBSWdwQkNrWWJJQXBCQVVZYkN5RUtJQUFMSVF3Z0FTQUtOZ0lNQ3lBSktBSWtJUUFnQWlnQzBDc2dBeWdDSEVHNENHeHFMUUFRUWNBQWNRUkFBMEFnREVFWWJDSU9JQWtvQWdCcUlBQkJBU0FNR3lJVE5nSVFJQWtvQWlBaEZrRUFJUW9nQUNFQklCTkJBazhFUUFOQUlBcEJBV29oQ2lBQlFRTkxJUnNnQVVFQmRpRUJJQnNOQUFzTElBb2dGbW9pQVVFaFR3UkFJQThnQVRZQ0VDQUlRUUZCdlBRQUlBOUJFR29RRHd3REN5QUxJQUVRSHlFS0lBa29BZ0FpQVNBT2FpSU9JQW8yQWhRZ0FDQU9LQUlRYXlJQVFRQk1EUU1nQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFvZ0NTZ0NNQ0lPSUF4QkFtcEpCRUFnQVNBT1FRcHFJZzVCR0d3UUZ5SUJSUTBESUFrZ0FUWUNBQ0FCSUFrb0FqQkJHR3hxUVFCQjhBRVFGUm9nQ1NBT05nSXdJQWtvQWdBaEFRc2dBU0FNUVFGcUlneEJHR3hxSWdIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SUFJQUZDQURjQ0VDQUJBbjlCQVNBS1FRUnhEUUFhUWUwQUlBcEJBWEZGRFFBYVFRSkJBa0VCSUFGQkRHc29BZ0FpQVVFS1Joc2dBVUVCUmhzTE5nSU1EQUFMQUFzRFFDQU1RUmhzSWc0Z0NTZ0NBR29pQVNBQktBSU1JQUVvQWdScklnRWdBQ0FBSUFGS0d5SUJOZ0lRSUFrb0FpQWhFMEVBSVFvZ0FVRUNUd1JBQTBBZ0NrRUJhaUVLSUFGQkEwc2hIQ0FCUVFGMklRRWdIQTBBQ3dzZ0NpQVRhaUlCUVNGUEJFQWdEeUFCTmdJQUlBaEJBVUc4OUFBZ0R4QVBEQUlMSUFzZ0FSQWZJUW9nQ1NnQ0FDSUJJQTVxSWc0Z0NqWUNGQ0FBSUE0b0FoQnJJZ0JCQUV3TkFpQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhDaUFKS0FJd0lnNGdERUVDYWtrRVFDQUJJQTVCQ21vaURrRVliQkFYSWdGRkRRSWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBVkdpQUpJQTQyQWpBZ0NTZ0NBQ0VCQ3lBQklBeEJBV29pREVFWWJHb2lBZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWdBZ0FVSUFOd0lRSUFFQ2YwRUJJQXBCQkhFTkFCcEI3UUFnQ2tFQmNVVU5BQnBCQWtFQ1FRRWdBVUVNYXlnQ0FDSUJRUXBHR3lBQlFRRkdHd3MyQWd3TUFBc0FDeUFMRUN3TUJRc2dDVUZBYXlFSklCVkJBV29pRlNBWVJ3MEFDd3NnRUVFa2FpRVFJQmxCQVdvaUdTQVJLQUlZU1EwQUN3c2dDeEJrUlFSQUlBc1FMQXdCQ3lBTEtBSUlJQXNvQWdCcklSMGdDeEFzSUIwZ0RXb2hBUUpBSUFJdEFBQkJCSEZGRFFBZ0J5Z0NBQ0FTS0FJQUlBRnJha0VCVFFSQUlBaEJBa0dZSVVFQUVBOE1BUXNDUUNBQkxRQUFRZjhCUmdSQUlBRXRBQUZCa2dGR0RRRUxJQWhCQWtIQ0lVRUFFQThNQVFzZ0FVRUNhaUVCQ3lBU0lCSW9BZ0FnQnlnQ0FDQUJhMm8yQWdBZ0J5QUJOZ0lBUVFFaEZ5QUVRUUUyQWdBZ0JpQVBLQUlZSUFWck5nSUFDeUFQUVNCcUpBQWdGd3VXSkFJVWZ3NStBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FKVURnVUFBUUlEQkFvTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQjlEOUJBQkFQREF3TElBQW9BaXhGQkVBZ0FDZ0NKQ0VDUVFBaEFRd0ZDeUFBUVFBMkFpd2dBQ2dDUkNFRFFRRWhBUXdFQ3dKQUlBQW9BalFpQmlBQUtBTEVBU0lCU1FSQUlBQW9Ba0FpQnlBQlFRRnFTUTBCQ3lBQUtBTHNBVUVCUWFIQUFFRUFFQThNQ3dzZ0FDZ0NMRVVFUUNBQUtBSWtJUVJCQUNFQkRBZ0xJQUJCQURZQ0xDQUFLQUl3SVFOQkFTRUJEQWNMQWtBZ0FDZ0NOQ0lFSUFBb0FzUUJJZ3BKQkVBZ0FDZ0NRQ0lPSUFwQkFXcEpEUUVMSUFBb0F1d0JRUUZCcU1FQVFRQVFEd3dLQ3lBQUtBSXNSUVJBSUFBb0FpZ2hDd3dHQ3lBQVFnQTNBdVFCSUFCQkFEWUNMQ0FBS0FMSUFTRU1BMEFnRENBSFFRUjBhaUlGS0FJSUlnOEVRQ0FGS0FJTUlSSkJBQ0VCQTBBQ1FDQVBJQUZCZjNOcUloQWdFaUFCUVFSMGFpSVJLQUlBYWlJSlFSOUxEUUFnQlNnQ0FDSVRRWDhnQ1haTERRQWdBQ0FDSUJNZ0NYUWlDU0FDSUFsSkd5QUpJQUliSWdJMkF1UUJDd0pBSUJFb0FnUWdFR29pQ1VFZlN3MEFJQVVvQWdRaUVFRi9JQWwyU3cwQUlBQWdBeUFRSUFsMElna2dBeUFKU1JzZ0NTQURHeUlETmdMb0FRc2dBVUVCYWlJQklBOUhEUUFMQ3lBSFFRRnFJZ2NnQ2tjTkFBc2dBa1VOQnlBRFJRMEhJQUF0QUFCRkJFQWdBQ0FBS0FMUUFUWUNiQ0FBSUFBb0Fzd0JOZ0prSUFBZ0FDZ0MyQUUyQW5BZ0FDQUFLQUxVQVRZQ2FBc2dBQ2dDTUNFRlFRRWhBUXdGQ3dKQUlBQW9BalFpQlNBQUtBTEVBU0lKU1FSQUlBQW9Ba0FpRWlBSlFRRnFTUTBCQ3lBQUtBTHNBVUVCUWZ2QUFFRUFFQThNQ1FzZ0FDZ0NMRVVFUUNBQUtBTElBU0lOSUFBb0Fod2lCRUVFZEdvaEN5QUFLQUlvSVFnTUJBc2dBRUlBTndMa0FTQUFRUUEyQWl3Z0FDZ0N5QUVoRFFOQUlBMGdCa0VFZEdvaUNpZ0NDQ0lPQkVBZ0NpZ0NEQ0VRUVFBaEFRTkFBa0FnRGlBQlFYOXphaUlSSUJBZ0FVRUVkR29pRXlnQ0FHb2lERUVmU3cwQUlBb29BZ0FpRkVGL0lBeDJTdzBBSUFBZ0FpQVVJQXgwSWd3Z0FpQU1TUnNnRENBQ0d5SUNOZ0xrQVFzQ1FDQVRLQUlFSUJGcUlneEJIMHNOQUNBS0tBSUVJaEZCZnlBTWRrc05BQ0FBSUFNZ0VTQU1kQ0lNSUFNZ0RFa2JJQXdnQXhzaUF6WUM2QUVMSUFGQkFXb2lBU0FPUncwQUN3c2dCa0VCYWlJR0lBbEhEUUFMSUFKRkRRWWdBMFVOQmdKQUlBQXRBQUFFUUNBQUtBSnNJUVlNQVFzZ0FDQUFLQUxRQVNJR05nSnNJQUFnQUNnQ3pBRTJBbVFnQUNBQUtBTFlBVFlDY0NBQUlBQW9BdFFCTmdKb0MwRUJJUUVNQXdzQ1FDQUFLQUkwSWdZZ0FDZ0N4QUVpQVVrRVFDQUFLQUpBSWc4Z0FVRUJha2tOQVFzZ0FDZ0M3QUZCQVVIT3dBQkJBQkFQREFZTElBQW9BaXhGQkVBZ0FDZ0N5QUVnQUNnQ0hDSUdRUVIwYWlFRklBQW9BaWdoQjBFQUlRRU1BZ3NnQUNBR05nSWNJQUJCQURZQ0xFRUJJUUVNQVFzRFFBSi9Ba0FnQVVVRVFDQUNRUUZxSVFJTUFRc2dBQ0FETmdJb0lBQW9BamdnQTAwTkNTQUFLQUl3SVFSQkFBd0JDMEVCQ3lFQkEwQUNRQUpBQWtBQ1FDQUJSUVJBSUFBZ0JEWUNJQ0FFSUFBb0FqeFBEUUVnQUNBR05nSWNJQVloQVVFQUlRVU1CQXNnQUNBQ05nSWtJQUFvQWt3Z0FrMEVRQ0FBS0FJY0lRRkJBU0VGREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBQUtBSW9iR29nQUNnQ0ZDQUFLQUljYkdvZ0FDZ0NHQ0FDYkdvaUFTQUFLQUlJVHdSQURBd0xJQUFvQWdRZ0FVRUJkR29pQVM4QkFBMEJEQTBMSUFBb0FpaEJBV29oQXd3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FnQlVVRVFDQUJJQWRQRFFFZ0FDZ0NJQ0lGSUFBb0FzZ0JJQUZCQkhScUlnMG9BZ2hQRFFNZ0FDMEFBRVVFUUNBQUlBMG9BZ3dnQlVFRWRHb2lBU2dDRENBQktBSUliRFlDVEFzZ0FDZ0NTQ0VDUVFFaEFRd0ZDeUFBSUFGQkFXb2lBVFlDSEF3QkN5QUFLQUlnUVFGcUlRUkJBQ0VCREFNTFFRQWhCUXdCQzBFQklRVU1BQXNBQ3dBTEFBc0RRQUovQWtBZ0FVVUVRQ0FBSUFkQkFXb2lCellDS0F3QkN5QUdJQTlQRFFnZ0FFSUFOd0xrQVNBQUtBTElBU0FHUVFSMGFpSUZLQUlJSWd0RkRRZ2dCU2dDRENFS1FRQWhBa0VBSVFSQkFDRUJBMEFDUUNBTElBRkJmM05xSWdrZ0NpQUJRUVIwYWlJT0tBSUFhaUlJUVI5TERRQWdCU2dDQUNJTVFYOGdDSFpMRFFBZ0FDQUVJQXdnQ0hRaUNDQUVJQWhKR3lBSUlBUWJJZ1EyQXVRQkN3SkFJQTRvQWdRZ0NXb2lDRUVmU3cwQUlBVW9BZ1FpQ1VGL0lBaDJTdzBBSUFBZ0FpQUpJQWgwSWdnZ0FpQUlTUnNnQ0NBQ0d5SUNOZ0xvQVFzZ0FVRUJhaUlCSUF0SERRQUxJQVJGRFFZZ0FrVU5CZ0pBSUFBdEFBQUVRQ0FBS0FKc0lRSU1BUXNnQUNBQUtBTFFBU0lDTmdKc0lBQWdBQ2dDekFFMkFtUWdBQ0FBS0FMWUFUWUNjQ0FBSUFBb0F0UUJOZ0pvQzBFQURBRUxRUUVMSVFFRFFBSkFBa0FDUUFKQUlBRkZCRUFnQUNBQ05nTGdBU0FDSUFBb0FuQlBEUUVnQUNnQ1pDRU5RUUFoQVF3RUN5QUFLQUk0SUFkTkJFQWdBQ2dDSUNFRFFRRWhBUXdFQ3lBQUtBSVFJQUFvQWlCc0lBQW9BZ3dnQjJ4cUlBQW9BaFFnQm14cUlBQW9BaGdnQUNnQ0pHeHFJZ0VnQUNnQ0NFOEVRQXdMQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3TUN5QUFJQVpCQVdvaUJqWUNIQXdCQzBFQUlRRU1Bd3RCQVNFQkRBSUxBMEFDUUFKQUFrQWdBQUovSUFGRkJFQWdBQ0FOTmdMY0FTQU5JQUFvQW1oUERRSWdBQ2dDTUF3QkN5QURRUUZxQ3lJRE5nSWdJQUFvQWp3aUFTQUZLQUlJSWdRZ0FTQUVTUnNnQTBzRVFDQUZLQUlBSWdFZ0FhMGlIaUFFSUFOQmYzTnFJZ2l0SWhhR0loY2dGb2luUncwRElBVW9BZ1FpQkVKL0lCYUlwM0VnQkVjTkF5QUVyU0lWSUJhR0loaENBWDBpR1NBQU5RTFlBWHdnR0lBaEh5QVpJQUFvQXRBQklnbXRmQ0FZZ0NFYUlCZENBWDBpR3lBQU5RTFVBWHdnRjRBaElDQWJJQUFvQXN3QklnNnRmQ0FYZ0NFY0lBRkNmeUFGS0FJTUlBTkJCSFJxSWdzb0FnQWlDaUFJYXEwaUhZaW5jU0FCUncwRElBUWdGU0FMS0FJRUlnRWdDR3F0SWhXR0lpRWdGWWluUncwRElBQW9BdUFCSWdTdElpSWdJWUpDQUZJRVFDQUVJQWxIRFFSQ2Z5QVZoa0ovaFNBYVF2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFBb0F0d0JJZ1N0SWhVZ0hpQWRob0pDQUZJRVFDQUVJQTVIRFFSQ2Z5QWRoa0ovaFNBY1F2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFzb0FnZ2lCRVVOQXlBTEtBSU1SUTBESUJ5bklnc2dJS2RHRFFNZ0dxY2lDQ0FmcDBZTkF5QUFJQUFvQWtRaUJ6WUNLQ0FBSUJVZ0czd2dGNENuSUFwMklBc2dDblpySUJrZ0lud2dHSUNuSUFGMklBZ2dBWFpySUFSc2FqWUNKRUVCSVFFTUJRc2dBQ2dDM0FFaUFTQUFLQUxrQVNJRWFpQUJJQVJ3YXlFTkRBRUxJQUFvQXVBQklnRWdBQ2dDNkFFaUJHb2dBU0FFY0dzaEFrRUFJUUVNQXd0QkFDRUJEQUVMUVFFaEFRd0FDd0FMQUFzQUN3TkFBbjhDUUNBQlJRUkFJQUFnQ0VFQmFpSUlOZ0lvREFFTElBQWdCallDNEFFZ0FDZ0NjQ0FHVFEwSElBQW9BbVFoRDBFQURBRUxRUUVMSVFFRFFBSkFBa0FDUUFKQUlBRkZCRUFnQUNBUE5nTGNBU0FQSUFBb0FtaFBEUUVnQUNBRk5nSWNJQVVoQkVFQUlRRU1CQXNnQUNnQ09DQUlUUVJBSUFBb0FpQWhCMEVCSVFFTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBaHNhaUFBS0FJVUlBUnNhaUFBS0FJWUlBQW9BaVJzYWlJQklBQW9BZ2hQQkVBTUNnc2dBQ2dDQkNBQlFRRjBhaUlCTHdFQURRRU1Dd3NnQUNnQzRBRWlBU0FBS0FMb0FTSUdhaUFCSUFad2F5RUdEQUVMUVFBaEFRd0RDMEVCSVFFTUFnc0RRQUpBQWtBQ1FBSkFJQUZGQkVBZ0JDQVNUdzBDSUFBZ0FDZ0NNQ0lITmdJZ0lBMGdCRUVFZEdvaEN3d0JDeUFBSUFkQkFXb2lCellDSUFzZ0FDZ0NQQ0lCSUFzb0FnZ2lBaUFCSUFKSkd5QUhTd1JBSUFzb0FnQWlBU0FCclNJZUlBSWdCMEYvYzJvaUNxMGlGb1lpRnlBV2lLZEhEUU1nQ3lnQ0JDSUNRbjhnRm9pbmNTQUNSdzBESUFLdEloVWdGb1lpR0VJQmZTSVpJQUExQXRnQmZDQVlnQ0VmSUJrZ0FDZ0MwQUVpRHExOElCaUFJUm9nRjBJQmZTSWJJQUExQXRRQmZDQVhnQ0VnSUJzZ0FDZ0N6QUVpREsxOElCZUFJUndnQVVKL0lBc29BZ3dnQjBFRWRHb2lBeWdDQUNJSklBcHFyU0lkaUtkeElBRkhEUU1nQWlBVklBTW9BZ1FpQVNBS2FxMGlGWVlpSVNBVmlLZEhEUU1nQUNnQzRBRWlBcTBpSWlBaGdrSUFVZ1JBSUFJZ0RrY05CRUovSUJXR1FuK0ZJQnBDLy8vLy93K0RJQmFHZzFBTkJBc2dBQ2dDM0FFaUFxMGlGU0FlSUIyR2drSUFVZ1JBSUFJZ0RFY05CRUovSUIyR1FuK0ZJQnhDLy8vLy93K0RJQmFHZzFBTkJBc2dBeWdDQ0NJQ1JRMERJQU1vQWd4RkRRTWdIS2NpQXlBZ3AwWU5BeUFhcHlJS0lCK25SZzBESUFBZ0FDZ0NSQ0lJTmdJb0lBQWdGU0FiZkNBWGdLY2dDWFlnQXlBSmRtc2dHU0FpZkNBWWdLY2dBWFlnQ2lBQmRtc2dBbXhxTmdJa1FRRWhBUXdGQ3lBQUlBUkJBV29pQkRZQ0hBd0JDeUFBS0FMY0FTSUJJQUFvQXVRQklnSnFJQUVnQW5CcklROUJBQ0VCREFNTFFRQWhBUXdCQzBFQklRRU1BQXNBQ3dBTEFBc0RRQUovQWtBZ0FVVUVRQ0FBSUF0QkFXb2lDellDS0F3QkN5QUFJQVUyQWlBZ0FDZ0NQQ0FGVFEwR0lBQW9BbXdoQ0VFQURBRUxRUUVMSVFFRFFBSkFBa0FDUUFKQUlBRkZCRUFnQUNBSU5nTGdBU0FJSUFBb0FuQlBEUUVnQUNnQ1pDRU5RUUFoQVF3RUN5QUFLQUk0SUF0TkJFQWdBQ2dDSENFR1FRRWhBUXdFQ3lBQUtBSVFJQUFvQWlCc0lBQW9BZ3dnQzJ4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0FDZ0NKR3hxSWdFZ0FDZ0NDRThFUUF3SkN5QUFLQUlFSUFGQkFYUnFJZ0V2QVFBTkFRd0tDeUFBS0FJZ1FRRnFJUVVNQVF0QkFDRUJEQU1MUVFFaEFRd0NDd05BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQTAyQXR3QklBMGdBQ2dDYUU4TkFpQUFJQVEyQWh3Z0JDRUdEQUVMSUFBZ0JrRUJhaUlHTmdJY0N5QUdJQTVKQkVBZ0FDZ0NJQ0lISUFBb0FzZ0JJQVpCQkhScUlnRW9BZ2dpQTA4TkF5QUJLQUlBSWdJZ0FxMGlIaUFESUFkQmYzTnFJZ3F0SWhhR0loY2dGb2luUncwRElBRW9BZ1FpQTBKL0lCYUlwM0VnQTBjTkF5QURyU0lWSUJhR0loaENBWDBpR1NBQU5RTFlBWHdnR0lBaEh5QVpJQUFvQXRBQklnK3RmQ0FZZ0NFYUlCZENBWDBpR3lBQU5RTFVBWHdnRjRBaElDQWJJQUFvQXN3QklnbXRmQ0FYZ0NFY0lBSkNmeUFCS0FJTUlBZEJCSFJxSWdFb0FnQWlCeUFLYXEwaUhZaW5jU0FDUncwRElBTWdGU0FCS0FJRUlnSWdDbXF0SWhXR0lpRWdGWWluUncwRElBQW9BdUFCSWdPdElpSWdJWUpDQUZJRVFDQURJQTlIRFFSQ2Z5QVZoa0ovaFNBYVF2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFBb0F0d0JJZ090SWhVZ0hpQWRob0pDQUZJRVFDQURJQWxIRFFSQ2Z5QWRoa0ovaFNBY1F2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFFb0FnZ2lBMFVOQXlBQktBSU1SUTBESUJ5bklnRWdJS2RHRFFNZ0dxY2lDaUFmcDBZTkF5QUFJQUFvQWtRaUN6WUNLQ0FBSUJVZ0czd2dGNENuSUFkMklBRWdCM1pySUJrZ0lud2dHSUNuSUFKMklBb2dBblpySUFOc2FqWUNKRUVCSVFFTUJRc2dBQ2dDM0FFaUFTQUFLQUxrQVNJQ2FpQUJJQUp3YXlFTkRBRUxJQUFvQXVBQklnRWdBQ2dDNkFFaUFtb2dBU0FDY0dzaENFRUFJUUVNQXd0QkFDRUJEQUVMUVFFaEFRd0FDd0FMQUFzQUN3TkFBbjhDUUNBQlJRUkFJQVJCQVdvaEJBd0JDeUFBSUFNMkFpQWdBQ2dDUENBRFRRMEZJQUFvQWtRaEFrRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUNOZ0lvSUFJZ0FDZ0NPRThOQVNBQUlBWTJBaHdnQmlFQlFRQWhCUXdFQ3lBQUlBUTJBaVFnQUNnQ1RDQUVUUVJBSUFBb0Fod2hBVUVCSVFVTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBQW9BaWhzYWlBQUtBSVVJQUFvQWh4c2FpQUFLQUlZSUFSc2FpSUJJQUFvQWdoUEJFQU1DQXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNQ1FzZ0FDZ0NJRUVCYWlFRERBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUNBRlJRUkFJQUVnQjA4TkFTQUFLQUlnSWdVZ0FDZ0N5QUVnQVVFRWRHb2lEU2dDQ0U4TkF5QUFMUUFBUlFSQUlBQWdEU2dDRENBRlFRUjBhaUlCS0FJTUlBRW9BZ2hzTmdKTUN5QUFLQUpJSVFSQkFTRUJEQVVMSUFBZ0FVRUJhaUlCTmdJY0RBRUxJQUFvQWloQkFXb2hBa0VBSVFFTUF3dEJBQ0VGREFFTFFRRWhCUXdBQ3dBTEFBc0FDMEVBRHdzZ0FDZ0M3QUZCQVVHYUNrRUFFQThMUVFBUEN5QUJRUUU3QVFCQkFRdVJDd0VLZndKQUlBRW9BZ0FnQkVFRGJDSU1kaUlHUVpDQWdBRnhEUUFnQUNBQVFSeHFJZzRnQUNnQ2JDQUdRZThEY1dvdEFBQkJBblJxSWdvMkFtZ2dBQ0FBS0FJRUlBb29BZ0FpQ1NnQ0FDSUlheUlHTmdJRUFrQWdDQ0FBS0FJQUlnZEJFSFpMQkVBZ0NTZ0NCQ0VMSUFBZ0NEWUNCQ0FLSUFsQkNFRU1JQVlnQ0VraUJodHFLQUlBTmdJQUlBc2dDMFVnQmhzaENTQUFLQUlJSVFZRFFBSkFJQVlOQUNBQUtBSVFJZ1pCQVdvaEN5QUdMUUFCSVFvZ0JpMEFBRUgvQVVZRVFDQUtRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFZTUFnc2dBQ0FMTmdJUUlBY2dDa0VKZEdvaEIwRUhJUVlNQVFzZ0FDQUxOZ0lRUVFnaEJpQUhJQXBCQ0hScUlRY0xJQUFnQmtFQmF5SUdOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdDRUVCZENJSU5nSUVJQWhCZ0lBQ1NRMEFDeUFJSVFZTUFRc2dBQ0FISUFoQkVIUnJJZ2MyQWdBZ0JrR0FnQUp4UlFSQUlBa29BZ1FoQ3lBS0lBbEJERUVJSUFZZ0NFa2lDQnRxS0FJQU5nSUFJQXRGSUFzZ0NCc2hDU0FBS0FJSUlRZ0RRQUpBSUFnTkFDQUFLQUlRSWdoQkFXb2hDeUFJTFFBQklRb2dDQzBBQUVIL0FVWUVRQ0FLUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQUNBTE5nSVFJQWNnQ2tFSmRHb2hCMEVISVFnTUFRc2dBQ0FMTmdJUVFRZ2hDQ0FISUFwQkNIUnFJUWNMSUFBZ0NFRUJheUlJTmdJSUlBQWdCMEVCZENJSE5nSUFJQUFnQmtFQmRDSUdOZ0lFSUFaQmdJQUNTUTBBQ3d3QkN5QUpLQUlFSVFrTElBbEZEUUFnQUNBT0lBRW9BZ1FnREVFUmFuWkJCSEVnQVVFRWF5SU5LQUlBSUF4QkUycDJRUUZ4SUFFb0FnQWlDQ0FNUVJCcWRrSEFBSEVnQ0NBTWRrR3FBWEZ5SUFnZ0RFRU1ha0VPSUFRYmRrRVFjWEp5Y2lJUFFkQzVBV290QUFCQkFuUnFJZ3MyQW1nZ0FDQUdJQXNvQWdBaUNpZ0NBQ0lJYXlJR05nSUVBa0FnQ0NBSFFSQjJTd1JBSUFvb0FnUWhDU0FBSUFnMkFnUWdDeUFLUVFoQkRDQUdJQWhKSWdZYmFpZ0NBRFlDQUNBSklBbEZJQVliSVFvZ0FDZ0NDQ0VHQTBBQ1FDQUdEUUFnQUNnQ0VDSUdRUUZxSVFzZ0JpMEFBU0VKSUFZdEFBQkIvd0ZHQkVBZ0NVR1FBVThFUUNBQUlBQW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VHREFJTElBQWdDellDRUNBSElBbEJDWFJxSVFkQkJ5RUdEQUVMSUFBZ0N6WUNFRUVJSVFZZ0J5QUpRUWgwYWlFSEN5QUFJQVpCQVdzaUJqWUNDQ0FBSUFkQkFYUWlCellDQUNBQUlBaEJBWFFpQ0RZQ0JDQUlRWUNBQWtrTkFBc01BUXNnQUNBSElBaEJFSFJySWdrMkFnQWdCa0dBZ0FKeFJRUkFJQW9vQWdRaEJ5QUxJQXBCREVFSUlBWWdDRWtpQ0J0cUtBSUFOZ0lBSUFkRklBY2dDQnNoQ2lBQUtBSUlJUWNEUUFKQUlBY05BQ0FBS0FJUUlnZEJBV29oQ3lBSExRQUJJUWdnQnkwQUFFSC9BVVlFUUNBSVFaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUpRWUQrQTJvaENVRUlJUWNNQWdzZ0FDQUxOZ0lRSUFrZ0NFRUpkR29oQ1VFSElRY01BUXNnQUNBTE5nSVFRUWdoQnlBSklBaEJDSFJxSVFrTElBQWdCMEVCYXlJSE5nSUlJQUFnQ1VFQmRDSUpOZ0lBSUFBZ0JrRUJkQ0lHTmdJRUlBWkJnSUFDU1EwQUN3d0JDeUFLS0FJRUlRb0xJQUpCQUNBRGF5QURJQW9nRDBIUXV3RnFMUUFBY3lJREd6WUNBQ0FOSUEwb0FnQkJJQ0FNZEhJMkFnQWdBU0FCS0FJQUlBTkJFM1JCRUhJZ0RIUnlOZ0lBSUFFZ0FTZ0NCRUVJSUF4MGNqWUNCQ0FFSUFWeVJRUkFJQUZCZmlBQUtBSjhhMEVDZEdvaUFpQUNLQUlFUVlDQUFuSTJBZ1FnQWlBQ0tBSUFJQU5CSDNSeVFZQ0FCSEkyQWdBZ0FrRUVheUlDSUFJb0FnQkJnSUFJY2pZQ0FBc2dCRUVEUncwQUlBRWdBQ2dDZkVFQ2RHb2lBRUVFYWlBQUtBSUVRUVJ5TmdJQUlBQWdBQ2dDREVFQmNqWUNEQ0FBSUFBb0FnZ2dBMEVTZEhKQkFuSTJBZ2dMQzZzTEFRbC9Ba0FnQVNnQ0FDQUVRUU5zSWcxMklnZEJrSUNBQVhFTkFDQUhRZThEY1NJSFJRMEFJQUFnQUVFY2FpSU9JQUFvQW13Z0Iyb3RBQUJCQW5ScUlnczJBbWdnQUNBQUtBSUVJQXNvQWdBaUNpZ0NBQ0lKYXlJSE5nSUVBa0FnQ1NBQUtBSUFJZ2hCRUhaTEJFQWdDaWdDQkNFTUlBQWdDVFlDQkNBTElBcEJDRUVNSUFjZ0NVa2lCeHRxS0FJQU5nSUFJQXdnREVVZ0J4c2hDaUFBS0FJSUlRY0RRQUpBSUFjTkFDQUFLQUlRSWdkQkFXb2hEQ0FITFFBQklRc2dCeTBBQUVIL0FVWUVRQ0FMUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSVFZRCtBMm9oQ0VFSUlRY01BZ3NnQUNBTU5nSVFJQWdnQzBFSmRHb2hDRUVISVFjTUFRc2dBQ0FNTmdJUVFRZ2hCeUFJSUF0QkNIUnFJUWdMSUFBZ0IwRUJheUlITmdJSUlBQWdDRUVCZENJSU5nSUFJQUFnQ1VFQmRDSUpOZ0lFSUFsQmdJQUNTUTBBQ3lBSklRY01BUXNnQUNBSUlBbEJFSFJySWdnMkFnQWdCMEdBZ0FKeFJRUkFJQW9vQWdRaERDQUxJQXBCREVFSUlBY2dDVWtpQ1J0cUtBSUFOZ0lBSUF4RklBd2dDUnNoQ2lBQUtBSUlJUWtEUUFKQUlBa05BQ0FBS0FJUUlnbEJBV29oRENBSkxRQUJJUXNnQ1MwQUFFSC9BVVlFUUNBTFFaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUlRWUQrQTJvaENFRUlJUWtNQWdzZ0FDQU1OZ0lRSUFnZ0MwRUpkR29oQ0VFSElRa01BUXNnQUNBTU5nSVFRUWdoQ1NBSUlBdEJDSFJxSVFnTElBQWdDVUVCYXlJSk5nSUlJQUFnQ0VFQmRDSUlOZ0lBSUFBZ0IwRUJkQ0lITmdJRUlBZEJnSUFDU1EwQUN3d0JDeUFLS0FJRUlRb0xBa0FnQ2tVTkFDQUFJQTRnQVNnQ0JDQU5RUkZxZGtFRWNTQUJRUVJySWc4b0FnQWdEVUVUYW5aQkFYRWdBU2dDQUNJSklBMUJFR3AyUWNBQWNTQUpJQTEyUWFvQmNYSWdDU0FOUVF4cVFRNGdCQnQyUVJCeGNuSnlJZ3BCMExrQmFpMEFBRUVDZEdvaUREWUNhQ0FBSUFjZ0RDZ0NBQ0lMS0FJQUlnbHJJZ2MyQWdRZ0NrSFF1d0ZxTFFBQUlRNENRQ0FKSUFoQkVIWkxCRUFnQ3lnQ0JDRUtJQUFnQ1RZQ0JDQU1JQXRCQ0VFTUlBY2dDVWtpQnh0cUtBSUFOZ0lBSUFvZ0NrVWdCeHNoQ3lBQUtBSUlJUWNEUUFKQUlBY05BQ0FBS0FJUUlnZEJBV29oRENBSExRQUJJUW9nQnkwQUFFSC9BVVlFUUNBS1FaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUlRWUQrQTJvaENFRUlJUWNNQWdzZ0FDQU1OZ0lRSUFnZ0NrRUpkR29oQ0VFSElRY01BUXNnQUNBTU5nSVFRUWdoQnlBSUlBcEJDSFJxSVFnTElBQWdCMEVCYXlJSE5nSUlJQUFnQ0VFQmRDSUlOZ0lBSUFBZ0NVRUJkQ0lKTmdJRUlBbEJnSUFDU1EwQUN3d0JDeUFBSUFnZ0NVRVFkR3NpQ2pZQ0FDQUhRWUNBQW5GRkJFQWdDeWdDQkNFSUlBd2dDMEVNUVFnZ0J5QUpTU0lKRzJvb0FnQTJBZ0FnQ0VVZ0NDQUpHeUVMSUFBb0FnZ2hDQU5BQWtBZ0NBMEFJQUFvQWhBaUNFRUJhaUVNSUFndEFBRWhDU0FJTFFBQVFmOEJSZ1JBSUFsQmtBRlBCRUFnQUNBQUtBSU1RUUZxTmdJTUlBcEJnUDREYWlFS1FRZ2hDQXdDQ3lBQUlBdzJBaEFnQ2lBSlFRbDBhaUVLUVFjaENBd0JDeUFBSUF3MkFoQkJDQ0VJSUFvZ0NVRUlkR29oQ2dzZ0FDQUlRUUZySWdnMkFnZ2dBQ0FLUVFGMElnbzJBZ0FnQUNBSFFRRjBJZ2MyQWdRZ0IwR0FnQUpKRFFBTERBRUxJQXNvQWdRaEN3c2dBa0VBSUFOcklBTWdDeUFPY3lJQ0d6WUNBQ0FQSUE4b0FnQkJJQ0FOZEhJMkFnQWdBU0FCS0FJQUlBSkJFM1JCRUhJZ0RYUnlOZ0lBSUFFZ0FTZ0NCRUVJSUExMGNqWUNCQ0FFSUFaeVJRUkFJQUVnQlVFQ2RHc2lBQ0FBS0FJRVFZQ0FBbkkyQWdRZ0FDQUFLQUlBSUFKQkgzUnlRWUNBQkhJMkFnQWdBRUVFYXlJQUlBQW9BZ0JCZ0lBSWNqWUNBQXNnQkVFRFJ3MEFJQUVnQlVFQ2RHb2lBQ0FBS0FJRVFRRnlOZ0lFSUFBZ0FDZ0NBQ0FDUVJKMGNrRUNjallDQUNBQVFRUnJJZ0FnQUNnQ0FFRUVjallDQUFzZ0FTQUJLQUlBUVlDQWdBRWdEWFJ5TmdJQUN3dXRBUUFnQUVId25RRTJBbVFnQUVId25RRTJBbUFnQUVId25RRTJBbHdnQUVId25RRTJBbGdnQUVId25RRTJBbFFnQUVId25RRTJBbEFnQUVId25RRTJBa3dnQUVId25RRTJBa2dnQUVId25RRTJBa1FnQUVId25RRTJBa0FnQUVId25RRTJBandnQUVId25RRTJBamdnQUVId25RRTJBalFnQUVId25RRTJBakFnQUVId25RRTJBaXdnQUVId25RRTJBaWdnQUVId25RRTJBaVFnQUVId25RRTJBaUFnQUVId25RRTJBaHdMa2dZQ0NYOEVmaUFBSUFFMkFnQWdBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQXdnZ0FDQUROZ0ljSUFBZ0FrRUJheUlGTmdJWUlBRkJBM0VoQ2dKL0lBSkJBRXdFUUNBQklRUWdBd3dCQ3lBQUlBRkJBV29pQkRZQ0FDQUJMUUFBQ3lFQlFRZ2hCeUFBUVFnMkFoQWdBQ0FCclNJTk53TUlJQUFnRFVML0FZTWlEa0wvQVZFaUNUWUNGQUpBSUFwQkEwWU5BQ0FBSUFKQkFtc2lDRFlDR0FKL0lBSkJBa2dFUUNBRUlRRWdBd3dCQ3lBQUlBUkJBV29pQVRZQ0FDQUVMUUFBQ3lFRUlBQkJEMEVRSUE1Qy93RlJHeUlITmdJUUlBQWdCSzBpRGtML0FZTWlEMEwvQVZFaUNUWUNGQ0FBSUE1Q0NJWWdEWVFpRFRjRENDQUtRUUpHQkVBZ0FTRUVJQVVoQWlBSUlRVU1BUXNnQUNBQ1FRTnJJZ3MyQWhnZ0FBSi9JQUpCQTBnRVFDQUJJUVlnQXd3QkN5QUFJQUZCQVdvaUJqWUNBQ0FCTFFBQUM2MGlEa0wvQVlNaUVFTC9BVkVpQ1RZQ0ZDQUFRUWRCQ0NBUFF2OEJVUnNnQjJvaUFUWUNFQ0FBSUE0Z0I2MkdJQTJFSWcwM0F3Z2dDa0VCUmdSQUlBWWhCQ0FCSVFjZ0NDRUNJQXNoQlF3QkN5QUFJQUpCQkdzaUJUWUNHQ0FBQW44Z0FrRUVTQVJBSUFZaEJDQUREQUVMSUFBZ0JrRUJhaUlFTmdJQUlBWXRBQUFMclNJT1F2OEJnMEwvQVZFaUNUWUNGQ0FBUVFkQkNDQVFRdjhCVVJzZ0FXb2lCellDRUNBQUlBNGdBYTJHSUEyRUlnMDNBd2dnQ3lFQ0N3SkFJQUpCQlU0RVFDQUVLQUlBSVFNZ0FDQUNRUVZyTmdJWUlBQWdCRUVFYWpZQ0FBd0JDMEVBSVFGQmYwRUFJQU1iSVFNZ0FrRUNTQTBBQTBBZ0FDQUVRUUZxSWdJMkFnQWdCQzBBQUNFRUlBQWdCVUVCYXlJR05nSVlJQU5CL3dFZ0FYUkJmM054SUFRZ0FYUnlJUU1nQVVFSWFpRUJJQVZCQVVzaERDQUNJUVFnQmlFRklBd05BQXNMSUFBZ0EwRVlkaUlCUWY4QlJqWUNGQ0FBUVFkQkNDQUpHeUlDUVFkQkNDQURRZjhCY1NJRVFmOEJSaHRxSWdWQkIwRUlJQU5CQ0haQi93RnhJZ1pCL3dGR0cyb2lDRUVIUVFnZ0EwRVFka0gvQVhFaUEwSC9BVVliSUFkcWFqWUNFQ0FBSUFZZ0FuUWdBeUFGZEhJZ0FTQUlkSElnQkhLdElBZXRoaUFOaERjRENBdTJCUUlTZndKK0FuOGdBQ2dDSENBQlFaZ0JiR29pQWtHUUFXc29BZ0FnQWtHWUFXc29BZ0JySWdNaEJTQUNRWXdCYXlnQ0FDQUNRWlFCYXlnQ0FHc2lBaUVHUWNBQUlBTWdBMEhBQUU4YklRTkJ3QUFnQWlBQ1FjQUFUeHNoQkFKQUlBVkZEUUFnQmtVTkFDQURSUTBBSUFSRkRRQkJmeUFFYmtFQ2RpQURTUTBBUVFGQkhCQVRJZ0lnQkRZQ0RDQUNJQU0yQWdnZ0FpQUdOZ0lFSUFJZ0JUWUNBQ0FDSUFTdEloUWdCcTE4UWdGOUlCU0FJaFNuSWdRMkFoUWdBaUFEclNJVklBV3RmRUlCZlNBVmdDSVZweUlETmdJUUFrQWdGRUwvLy8vL0Q0TWdGVUwvLy8vL0Q0TitRaUNJcHcwQUlBSkJCQ0FESUFSc0VCTWlBellDR0NBRFJRMEFJQUlNQWdzZ0FoQVFDMEVBQ3lJSlJRUkFRUUFQQ3dKQUlBRUVRQU5BSUE1Qm1BRnNJZzhnQUNnQ0hHb2lCU2dDR0NJQ0JFQWdCVUVjYWlFUUlBVW9BaFFoQXlBRktBSVFJUVJCQUNFS0EwQWdBeUFFYkFSQUlCQWdDa0VrYkdvaEJrRUFJUXNEUUNBR0tBSVVJQXRCS0d4cUlnZ29BaFFpQWlBSUtBSVFJZ2RzQkVCQkFDRUVBMEFnQ0NnQ0dDQUVRUVowYWlJREtBSThJaEVFUUNBREtBSU1JUWNnQXlnQ0ZDRVNJQU1vQWhBaERDQURLQUlJSWhNZ0JpZ0NBR3NoQXlBR0tBSVFJZzFCQVhFRVFDQUFLQUljSUE5cUlnSkJrQUZyS0FJQUlBTnFJQUpCbUFGcktBSUFheUVEQ3lBSElBWW9BZ1JySVFJZ0RVRUNjUVJBSUFJZ0FDZ0NIQ0FQYWlJTlFZd0JheWdDQUdvZ0RVR1VBV3NvQWdCcklRSUxJQWtnQXlBQ0lBTWdEQ0FUYXlJTWFpQVNJQWRySUFKcUlCRkJBU0FNUVFBUUprVU5DU0FJS0FJUUlRY2dDQ2dDRkNFQ0N5QUVRUUZxSWdRZ0FpQUhiRWtOQUFzZ0JTZ0NFQ0VFSUFVb0FoUWhBd3NnQzBFQmFpSUxJQU1nQkd4SkRRQUxJQVVvQWhnaEFnc2dDa0VCYWlJS0lBSkpEUUFMQ3lBT1FRRnFJZzRnQVVjTkFBc0xJQWtQQ3lBSkVDTkJBQXZRREFJUWZ3WjdJQUFvQWdnaUN5QUFLQUlFYWlFSEFrQWdBQ2dDREVVRVFDQUhRUUpJRFFFZ0FTZ0NBQ0FCSUF0QkFuUnFJZzBvQWdBaUJFRUJha0VCZFdzaEF5QUFLQUlBSVFZQ1FDQUhRUVJKQkVBZ0JDRUNEQUVMSUFkQkJHc2lBRUVCZGlJSlFRRnFJUXdDUUNBQVFSWkpCRUJCQVNFQURBRUxJQVlnQVNBTFFRSjBhaUlGSUFsQkFuUWlBbXBCQ0dwSklBWWdDVUVEZEdwQkNHb2lBQ0FGUVFScVMzRUVRRUVCSVFBTUFRc2dCaUFCSUFKcVFRaHFTU0FCUVFScUlBQkpjUVJBUVFFaEFBd0JDeUFNUWZ6Ly8vOEhjU0lGUVFGeUlRQWdCVUVCZENFSUlBVDlFU0VTSUFQOUVTRVQvUXdBQUFBQUFnQUFBQVFBQUFBR0FBQUFJUlpCQUNFQ0EwQWdBU0FDUVFKMFFRUnlJZ05xL1FBQ0FDRVZJQU1nRFdyOUFBSUFJUlFnQmlBQ1FRTjBhaUlESUJQOVdnSUFBeUFEUVFocUlCVWdGQ0FTSUJUOURRd05EZzhRRVJJVEZCVVdGeGdaR2hzaUZmMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWhMOVdnSUFBQ0FEUVJCcUlCTDlXZ0lBQVNBRFFSaHFJQkw5V2dJQUFpQUdJQmI5REFFQUFBQUJBQUFBQVFBQUFBRUFBQUQ5VUNJWC9Sc0FRUUowYWlBU0lCTWdFdjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHLzJ1QVVFQi9hd0JJQlg5cmdFaUUvMWFBZ0FBSUFZZ0YvMGJBVUVDZEdvZ0UvMWFBZ0FCSUFZZ0YvMGJBa0VDZEdvZ0UvMWFBZ0FDSUFZZ0YvMGJBMEVDZEdvZ0UvMWFBZ0FESUJiOURBZ0FBQUFJQUFBQUNBQUFBQWdBQUFEOXJnRWhGaUFTSVJNZ0ZDRVNJQUpCQkdvaUFpQUZSdzBBQ3lBUy9Sc0RJUUlnRS8wYkF5RURJQVVnREVZTkFTQUNJUVFMQTBBZ0FTQUFRUUowSWdKcUtBSUFJUWtnQWlBTmFpZ0NBQ0VDSUFZZ0NFRUNkR29pQlNBRE5nSUFJQVVnQXlBSklBSWdCR3BCQW1wQkFuVnJJZ05xUVFGMUlBUnFOZ0lFSUFoQkFtb2hDQ0FBSUF4SElSQWdBaUVFSUFCQkFXb2hBQ0FRRFFBTEN5QUdJQWhCQW5ScUlBTTJBZ0JCZkNFQUlBZEJBWEVFZnlBR0lBZEJBV3NpQUVFQ2RHb2dBU0FBUVFGMGFpZ0NBQ0FDUVFGcVFRRjFheUlBTmdJQUlBQWdBMnBCQVhVaEEwRjRCVUY4Q3lBR0lBZEJBblFpQUdwcUlBSWdBMm8yQWdBZ0FTQUdJQUFRRWhvUEN3SkFBa0FDUUNBSFFRRnJEZ0lBQVFJTElBRWdBU2dDQUVFQ2JUWUNBQThMSUFBb0FnQWlCQ0FCS0FJQUlBRWdDMEVDZEdvaUF5Z0NBRUVCYWtFQmRXc2lBRFlDQkNBRUlBQWdBeWdDQUdvMkFnQWdBU0FFS1FJQU53SUFEd3NnQjBFRFNBMEFJQUFvQWdBaUNpQUJLQUlBSUFFZ0MwRUNkR29pRGlnQ0JDSUVJQTRvQWdBaUFHcEJBbXBCQW5WcklnTWdBR28yQWdCQkFTRUlBa0FnQjBFQ2F5SUdJQWRCQVhFaURFVWlBR3RCQWtrRVFDQUVJUUlNQVFzZ0J5QUFhMEVFYXlJQVFRRjJJZ0pCQVdvaER3SkFBa0FnQUVFV1NRMEFJQXBCQkdvaUJTQUJJQUpCQW5RaUFHcEJDR3BKSUFvZ0FrRURkR3BCREdvaUFpQUJRUVJxUzNFTkFDQUZJQUFnQVNBTFFRSjBhaUlBYWtFTWFra2dBRUVJYWlBQ1NYRU5BQ0FQUVh4eElnVkJBWEloQUNBRlFRRjBRUUZ5SVFnZ0JQMFJJUk1nQS8wUklSSkJBQ0VDQTBBZ0NpQUNRUU4wYWlJRUlBRWdBa0VDZENJRGF2MEFBZ1FnRXlBRElBNXEvUUFDQ0NJVC9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYkloVWdFLzJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQkloUWdGQ0FTSUJUOURRd05EZzhRRVJJVEZCVVdGeGdaR2h2OXJnRkJBZjJzQVNBVi9hNEJJaFg5RFFRRkJnY1lHUm9iQ0FrS0N4d2RIaC85Q3dJVUlBUWdFaUFWL1EwTURRNFBFQkVTRXdBQkFnTVVGUllYSUJUOURRQUJBZ01FQlFZSEVCRVNFd3dORGcvOUN3SUVJQlFoRWlBQ1FRUnFJZ0lnQlVjTkFBc2dFLzBiQXlFQ0lCTDlHd01oQXlBRklBOUdEUUlnQWlFRURBRUxRUUVoQUFzRFFDQUJJQUJCQW5ScUtBSUFJUTBnRGlBQVFRRnFJZ1ZCQW5ScUtBSUFJUUlnQ2lBSVFRSjBhaUlKSUFNMkFnQWdDU0FESUEwZ0FpQUVha0VDYWtFQ2RXc2lBMnBCQVhVZ0JHbzJBZ1FnQ0VFQ2FpRUlJQUFnRDBjaEVTQUNJUVFnQlNFQUlCRU5BQXNMSUFvZ0NFRUNkR29nQXpZQ0FBSkFJQXhGQkVBZ0NpQUdRUUowYWlBQklBZEJBWFJxUVFScktBSUFJQUpCQVdwQkFYVnJJZ0FnQTJwQkFYVWdBbW8yQWdBTUFRc2dBaUFEYWlFQUN5QUtJQWRCQW5RaUEycEJCR3NnQURZQ0FDQUJJQW9nQXhBU0dnc0xvQWNEQTMwRGV3Si9JQU5CQ0U4RVFDQURRUU4ySVFzRFFDQUIvUUFFQUNFSElBQWdBUDBBQkFBaUNDQUMvUUFFQUNJSi9ReThkTE0vdkhTelA3eDBzeis4ZExNLy9lWUIvZVFCL1FzRUFDQUJJQWdnQi8wTXp6R3dQczh4c0Q3UE1iQSt6ekd3UHYzbUFmM2xBU0FKL1F6aDBUWS80ZEUyUCtIUk5qL2gwVFkvL2VZQi9lVUIvUXNFQUNBQ0lBZ2dCLzBNNWREaVArWFE0ai9sME9JLzVkRGlQLzNtQWYza0FmMExCQUFnQWYwQUJCQWhCeUFBSUFEOUFBUVFJZ2dnQXYwQUJCQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQkFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJCQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRUUlBSkJJR29oQWlBQlFTQnFJUUVnQUVFZ2FpRUFJQXBCQVdvaUNpQUxSdzBBQ3dzQ1FDQURRUWR4SWdORkRRQWdBU29DQUNFRUlBQWdBaW9DQUNJR1E3eDBzeitVSUFBcUFnQWlCWkk0QWdBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlBSUFJZ0JTQUVRK1hRNGorVWtqZ0NBQ0FEUVFGR0RRQWdBU29DQkNFRUlBQWdBaW9DQkNJR1E3eDBzeitVSUFBcUFnUWlCWkk0QWdRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlFSUFJZ0JTQUVRK1hRNGorVWtqZ0NCQ0FEUVFKR0RRQWdBU29DQ0NFRUlBQWdBaW9DQ0NJR1E3eDBzeitVSUFBcUFnZ2lCWkk0QWdnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlJSUFJZ0JTQUVRK1hRNGorVWtqZ0NDQ0FEUVFOR0RRQWdBU29DRENFRUlBQWdBaW9DRENJR1E3eDBzeitVSUFBcUFnd2lCWkk0QWd3Z0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlNSUFJZ0JTQUVRK1hRNGorVWtqZ0NEQ0FEUVFSR0RRQWdBU29DRUNFRUlBQWdBaW9DRUNJR1E3eDBzeitVSUFBcUFoQWlCWkk0QWhBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlRSUFJZ0JTQUVRK1hRNGorVWtqZ0NFQ0FEUVFWR0RRQWdBU29DRkNFRUlBQWdBaW9DRkNJR1E3eDBzeitVSUFBcUFoUWlCWkk0QWhRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlVSUFJZ0JTQUVRK1hRNGorVWtqZ0NGQ0FEUVFaR0RRQWdBU29DR0NFRUlBQWdBaW9DR0NJR1E3eDBzeitVSUFBcUFoZ2lCWkk0QWhnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlZSUFJZ0JTQUVRK1hRNGorVWtqZ0NHQXNMNEFFQ0JuOERld0pBSUFORkRRQWdBMEVFVHdSQUlBTkJmSEVoQmdOQUlBQWdCRUVDZENJRmFpSUhJQWY5QUFJQUlBSWdCV29pQi8wQUFnQWlDeUFCSUFWcUlnWDlBQUlBSWd6OXJnRkJBdjJzQWYyeEFTSUtJQXY5cmdIOUN3SUFJQVVnQ3YwTEFnQWdCeUFLSUF6OXJnSDlDd0lBSUFSQkJHb2lCQ0FHUncwQUN5QURJQVpHRFFFTEEwQWdBQ0FHUVFKMElnUnFJZ1VnQlNnQ0FDQUNJQVJxSWdVb0FnQWlCeUFCSUFScUlnZ29BZ0FpQ1dwQkFuVnJJZ1FnQjJvMkFnQWdDQ0FFTmdJQUlBVWdCQ0FKYWpZQ0FDQUdRUUZxSWdZZ0EwY05BQXNMQzkwQkFRUi9Jd0JCZ0FGcklnWWtBQ0FHSVFVQ1FDQUJLQUlNSUFKQkJIUnFJZ0lvQWdBaUJFVUVRQ0FDSVFFTUFRc0RRQ0FGSUFJMkFnQWdCVUVFYWlFRklBUWlBU0lDS0FJQUlnUU5BQXNMUVFBaEJBTkFJQUVvQWdnaUFpQUVTQVJBSUFFZ0JEWUNDQ0FFSVFJTEFrQWdBaUFEVGcwQUEwQWdBaUFCS0FJRVRnMEJBa0FnQUVFQkVCOEVRQ0FCSUFJMkFnUU1BUXNnQWtFQmFpRUNDeUFDSUFOSURRQUxDeUFCSUFJMkFnZ2dCU0FHUndSQUlBVkJCR3NpQlNnQ0FDRUJJQUloQkF3QkN3c2dBU2dDQkNFSElBWkJnQUZxSkFBZ0J5QURTQXY5QmdFTGZ5TUFRWUFDYXlJS0pBQUNRQ0FBUlFSQVFRQWhBQXdCQ3dKQUlBRWdBQ2dDQUVZRVFDQUFLQUlFSUFKR0RRRUxJQUFnQWpZQ0JDQUFJQUUyQWdBZ0NpQUNOZ0lBSUFvZ0FUWUNnQUVnQWlFRUlBRWhCUU5BSUFvZ0J5SU1RUUZxSWdkQkFuUWlDR29nQkVFQmFrRUNiU0lKTmdJQUlBcEJnQUZxSUFocUlBVkJBV3BCQW0waUNEWUNBQ0FHSUFRZ0JXd2lDMm9oQmlBSklRUWdDQ0VGSUF0QkFVc05BQXNnQUNBR05nSUlBa0FDUUFKQUFrQWdCa1VFUUNBQUtBSU1JZ1JGRFFJZ0FFRU1haUVGREFFTElBWkJCSFFpQkNBQUtBSVFUUTBESUFBb0Fnd2dCQkFYSWdFTkFpQURRUUZCbWpGQkFCQVBJQUJCREdvaUJTZ0NBQ0lFUlEwQkN5QUVFQkFnQlVFQU5nSUFDeUFBRUJCQkFDRUFEQU1MSUFBZ0FUWUNEQ0FCSUFBb0FoQWlBbXBCQUNBRUlBSnJFQlVhSUFBZ0JEWUNFQ0FBS0FJRUlRSWdBQ2dDQUNFQkN5QUFLQUlNSVFVZ0RBUkFRUUFoQXlBRklBRWdBbXhCQkhScUlnUWhCZ05BQWtBZ0NpQURRUUowSWdGcUtBSUFJZ2hCQUV3TkFDQUlRUUZySVF0QkFDRUpBa0FDUUNBS1FZQUJhaUFCYWlnQ0FDSUNRUUJNQkVBZ0NFRUJjU0VOUVFBaEJ5QUlRUUZIRFFFZ0JpRUJEQUlMQTBBZ0JpRUJJQUloQmdOQUFrQWdCU0FFTmdJQUlBWkJBVVlFUUNBRlFSQnFJUVVnQkVFUWFpRUVEQUVMSUFVZ0JEWUNFQ0FFUVJCcUlRUWdCVUVnYWlFRklBWkJBa29oRGlBR1FRSnJJUVlnRGcwQkN3c2dCQ0FCSUFKQkJIUnFJQWtnQ1NBTFJuSkJBWEVpQnhzaEJpQUVJQUVnQnhzaEJDQUpRUUZxSWdrZ0NFY05BQXNNQWdzZ0NFSCsvLy8vQjNFaENBTkFJQWNnQzBZaEFTQUhRUUpxSVFjZ0JDQUdJQUViSWdRaEJpQUVJUUVnQ1VFQ2FpSUpJQWhIRFFBTEN5QU5SUVJBSUFRaEJnd0JDeUFFSUFFZ0FrRUVkR29nQnlBSElBdEdja0VCY1NJQ0d5RUdJQVFnQVNBQ0d5RUVDeUFEUVFGcUlnTWdERWNOQUFzTElBVkJBRFlDQUFzZ0FDZ0NDQ0lCUlEwQUlBQW9BZ3doQkNBQlFRUlBCRUFnQVVGOGNTRUNRUUFoQlFOQUlBUkJBRFlDUENBRVF1Y0hOd0kwSUFSQkFEWUNMQ0FFUXVjSE53SWtJQVJCQURZQ0hDQUVRdWNITndJVUlBUkJBRFlDRENBRVF1Y0hOd0lFSUFSQlFHc2hCQ0FGUVFScUlnVWdBa2NOQUFzTElBRkJBM0VpQVVVTkFFRUFJUVVEUUNBRVFRQTJBZ3dnQkVMbkJ6Y0NCQ0FFUVJCcUlRUWdCVUVCYWlJRklBRkhEUUFMQ3lBS1FZQUNhaVFBSUFBTHNRRUJBMzhDUUNBQVJRMEFJQUFvQWdnaUFVVU5BQ0FBS0FJTUlRQWdBVUVFVHdSQUlBRkJmSEVoQXdOQUlBQkJBRFlDUENBQVF1Y0hOd0kwSUFCQkFEWUNMQ0FBUXVjSE53SWtJQUJCQURZQ0hDQUFRdWNITndJVUlBQkJBRFlDRENBQVF1Y0hOd0lFSUFCQlFHc2hBQ0FDUVFScUlnSWdBMGNOQUFzTElBRkJBM0VpQVVVTkFFRUFJUUlEUUNBQVFRQTJBZ3dnQUVMbkJ6Y0NCQ0FBUVJCcUlRQWdBa0VCYWlJQ0lBRkhEUUFMQ3d2N0JRRVFmeU1BUVlBQ2F5SUlKQUFDZjBFQlFSUVFFeUlHUlFSQUlBSkJBVUgwTUVFQUVBOUJBQXdCQ3lBR0lBRTJBZ1FnQmlBQU5nSUFJQWdnQVRZQ0FDQUlJQUEyQW9BQkEwQWdDQ0FGSWcxQkFXb2lCVUVDZENJSGFpQUJRUUZxUVFKdElnTTJBZ0FnQ0VHQUFXb2dCMm9nQUVFQmFrRUNiU0lITmdJQUlBUWdBQ0FCYkNJSmFpRUVJQU1oQVNBSElRQWdDVUVCU3cwQUN5QUdJQVEyQWdnZ0JFVUVRQ0FHRUJCQkFBd0JDeUFHSUFSQkVCQVRJZ00yQWd3Z0EwVUVRQ0FDUVFGQjJocEJBQkFQSUFZUUVFRUFEQUVMSUFZZ0JpZ0NDQ0lMUVFSME5nSVFJQU1oQUNBTkJFQWdBeUFHS0FJRUlBWW9BZ0JzUVFSMGFpSUVJUUVEUUFKQUlBZ2dEa0VDZENJQ2FpZ0NBQ0lKUVFCTURRQWdDVUVCYXlFTVFRQWhCd0pBSUFoQmdBRnFJQUpxS0FJQUlnSkJBRXdFUUVFQUlRVWdDVUVCUndSQUlBbEIvdi8vL3dkeElRb0RRQ0FGSUF4R0lROGdCVUVDYWlFRklBRWdCQ0FQR3lJRUlRRWdCMEVDYWlJSElBcEhEUUFMQ3lBSlFRRnhEUUVnQkNFQkRBSUxBMEFnQkNFRklBSWhCQU5BQWtBZ0FDQUJOZ0lBSUFSQkFVWUVRQ0FBUVJCcUlRQWdBVUVRYWlFQkRBRUxJQUFnQVRZQ0VDQUJRUkJxSVFFZ0FFRWdhaUVBSUFSQkFrb2hFQ0FFUVFKcklRUWdFQTBCQ3dzZ0FTQUZJQUpCQkhScUlBY2dCeUFNUm5KQkFYRWlDaHNoQkNBQklBVWdDaHNoQVNBSFFRRnFJZ2NnQ1VjTkFBc01BUXNnQVNBRUlBSkJCSFJxSUFVZ0JTQU1SbkpCQVhFaUJSc2hFU0FCSUFRZ0JSc2hBU0FSSVFRTElBNUJBV29pRGlBTlJ3MEFDd3NnQUVFQU5nSUFBa0FnQzBVTkFDQUxRUVJQQkVBZ0MwRjhjU0VBUVFBaEFRTkFJQU5CQURZQ1BDQURRdWNITndJMElBTkJBRFlDTENBRFF1Y0hOd0lrSUFOQkFEWUNIQ0FEUXVjSE53SVVJQU5CQURZQ0RDQURRdWNITndJRUlBTkJRR3NoQXlBQlFRUnFJZ0VnQUVjTkFBc0xJQXRCQTNFaUFFVU5BRUVBSVFFRFFDQURRUUEyQWd3Z0EwTG5CemNDQkNBRFFSQnFJUU1nQVVFQmFpSUJJQUJIRFFBTEN5QUdDeUVTSUFoQmdBSnFKQUFnRWd0VEFRRi9BbjhnQUMwQURFSC9BVVlFUUNBQVFvRCtnNER3QURjQ0RFRUFJQUFvQWdnaUFTQUFLQUlFVHcwQkdpQUFJQUZCQVdvMkFnZ2dBQ0FCTFFBQVFZRCtBM0kyQWd3TElBQkJBRFlDRUVFQkN3dCtBZ0YvQVg0Z0FMMGlBMEkwaUtkQi93OXhJZ0pCL3c5SEJId2dBa1VFUUNBQklBQkVBQUFBQUFBQUFBQmhCSDlCQUFVZ0FFUUFBQUFBQUFEd1E2SWdBUkJsSVFBZ0FTZ0NBRUZBYWdzMkFnQWdBQThMSUFFZ0FrSCtCMnMyQWdBZ0EwTC8vLy8vLy8vL2g0Qi9nMEtBZ0lDQWdJQ0E4RCtFdndVZ0FBc0xTUUVCZndKQVFRRkJMQkFUSWdFRVFDQUJRUUEyQWhBQ1FDQUFRUUJNQkVBZ0FVRUJRUWdRRXlJQU5nSWtJQUJGRFFFTUF3c2dBVUVBTmdJTUN5QUJFQkFMUVFBaEFRc2dBUXVSQWdBZ0FFVUVRRUVBRHdzQ2Z3SkFJQUZCL3dCTkRRQUNRRUdVMEFFb0FnQW9BZ0JGQkVBZ0FVR0FmM0ZCZ0w4RFJnMENEQUVMSUFGQi93OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUFTQUFJQUZCQm5aQndBRnlPZ0FBUVFJTUF3c2dBVUdBUUhGQmdNQURSeUFCUVlDd0EwOXhSUVJBSUFBZ0FVRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFlQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FCUVFNTUF3c2dBVUdBZ0FSclFmLy9QMDBFUUNBQUlBRkJQM0ZCZ0FGeU9nQURJQUFnQVVFU2RrSHdBWEk2QUFBZ0FDQUJRUVoyUVQ5eFFZQUJjam9BQWlBQUlBRkJESFpCUDNGQmdBRnlPZ0FCUVFRTUF3c0xRWlRIQVVFWk5nSUFRWDhNQVFzZ0FDQUJPZ0FBUVFFTEM3d0NBQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FVRUphdzRTQUFnSkNnZ0pBUUlEQkFvSkNnb0lDUVVHQndzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQktBSUFOZ0lBRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk1nRUFOd01BRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk13RUFOd01BRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk1BQUFOd01BRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk1RQUFOd01BRHdzZ0FpQUNLQUlBUVFkcVFYaHhJZ0ZCQ0dvMkFnQWdBQ0FCS3dNQU9RTUFEd3NnQUNBQ0lBTVJBd0FMRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk5BSUFOd01BRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk5RSUFOd01BRHdzZ0FpQUNLQUlBUVFkcVFYaHhJZ0ZCQ0dvMkFnQWdBQ0FCS1FNQU53TUFDM01CQm44Z0FDZ0NBQ0lETEFBQVFUQnJJZ0ZCQ1VzRVFFRUFEd3NEUUVGL0lRUWdBa0hNbWJQbUFFMEVRRUYvSUFFZ0FrRUtiQ0lGYWlBQklBVkIvLy8vL3dkelN4c2hCQXNnQUNBRFFRRnFJZ1UyQWdBZ0F5d0FBU0VHSUFRaEFpQUZJUU1nQmtFd2F5SUJRUXBKRFFBTElBSUx0QlFDRlg4QmZpTUFRVUJxSWdna0FDQUlJQUUyQWp3Z0NFRW5haUVXSUFoQktHb2hFUUpBQWtBQ1FBSkFBMEJCQUNFSEEwQWdBU0VOSUFjZ0RrSC8vLy8vQjNOS0RRSWdCeUFPYWlFT0FrQUNRQUpBQWtBZ0FTSUhMUUFBSWdzRVFBTkFBa0FDUUNBTFFmOEJjU0lCUlFSQUlBY2hBUXdCQ3lBQlFTVkhEUUVnQnlFTEEwQWdDeTBBQVVFbFJ3UkFJQXNoQVF3Q0N5QUhRUUZxSVFjZ0N5MEFBaUVaSUF0QkFtb2lBU0VMSUJsQkpVWU5BQXNMSUFjZ0RXc2lCeUFPUWYvLy8vOEhjeUlYU2cwSklBQUVRQ0FBSUEwZ0J4QVpDeUFIRFFjZ0NDQUJOZ0k4SUFGQkFXb2hCMEYvSVJBQ1FDQUJMQUFCUVRCcklnbEJDVXNOQUNBQkxRQUNRU1JIRFFBZ0FVRURhaUVIUVFFaEVpQUpJUkFMSUFnZ0J6WUNQRUVBSVF3Q1FDQUhMQUFBSWd0QklHc2lBVUVmU3dSQUlBY2hDUXdCQ3lBSElRbEJBU0FCZENJQlFZblJCSEZGRFFBRFFDQUlJQWRCQVdvaUNUWUNQQ0FCSUF4eUlRd2dCeXdBQVNJTFFTQnJJZ0ZCSUU4TkFTQUpJUWRCQVNBQmRDSUJRWW5SQkhFTkFBc0xBa0FnQzBFcVJnUkFBbjhDUUNBSkxBQUJRVEJySWdGQkNVc05BQ0FKTFFBQ1FTUkhEUUFDZnlBQVJRUkFJQVFnQVVFQ2RHcEJDallDQUVFQURBRUxJQU1nQVVFRGRHb29BZ0FMSVE4Z0NVRURhaUVCUVFFTUFRc2dFZzBHSUFsQkFXb2hBU0FBUlFSQUlBZ2dBVFlDUEVFQUlSSkJBQ0VQREFNTElBSWdBaWdDQUNJSFFRUnFOZ0lBSUFjb0FnQWhEMEVBQ3lFU0lBZ2dBVFlDUENBUFFRQk9EUUZCQUNBUGF5RVBJQXhCZ01BQWNpRU1EQUVMSUFoQlBHb1FhU0lQUVFCSURRb2dDQ2dDUENFQkMwRUFJUWRCZnlFS0FuOUJBQ0FCTFFBQVFTNUhEUUFhSUFFdEFBRkJLa1lFUUFKL0FrQWdBU3dBQWtFd2F5SUpRUWxMRFFBZ0FTMEFBMEVrUncwQUlBRkJCR29oQVFKL0lBQkZCRUFnQkNBSlFRSjBha0VLTmdJQVFRQU1BUXNnQXlBSlFRTjBhaWdDQUFzTUFRc2dFZzBHSUFGQkFtb2hBVUVBSUFCRkRRQWFJQUlnQWlnQ0FDSUpRUVJxTmdJQUlBa29BZ0FMSVFvZ0NDQUJOZ0k4SUFwQkFFNE1BUXNnQ0NBQlFRRnFOZ0k4SUFoQlBHb1FhU0VLSUFnb0Fqd2hBVUVCQ3lFVEEwQWdCeUVVUVJ3aENTQUJJaGdzQUFBaUIwSDdBR3RCUmtrTkN5QUJRUUZxSVFFZ0J5QVVRVHBzYWtHL3dBRnFMUUFBSWdkQkFXdEJDRWtOQUFzZ0NDQUJOZ0k4QWtBZ0IwRWJSd1JBSUFkRkRRd2dFRUVBVGdSQUlBQkZCRUFnQkNBUVFRSjBhaUFITmdJQURBd0xJQWdnQXlBUVFRTjBhaWtEQURjRE1Bd0NDeUFBUlEwSUlBaEJNR29nQnlBQ0lBWVFhQXdCQ3lBUVFRQk9EUXRCQUNFSElBQkZEUWdMSUFBdEFBQkJJSEVOQ3lBTVFmLy9lM0VpQ3lBTUlBeEJnTUFBY1JzaERFRUFJUkJCc0FnaEZTQVJJUWtDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDZndKQUFrQUNRQUpBQWtBQ1FBSkFJQmdzQUFBaUIwRlRjU0FISUFkQkQzRkJBMFliSUFjZ0ZCc2lCMEhZQUdzT0lRUVdGaFlXRmhZV0ZoQVdDUVlRRUJBV0JoWVdGaFlDQlFNV0Znb1dBUllXQkFBTEFrQWdCMEhCQUdzT0J4QVdDeFlRRUJBQUN5QUhRZE1BUmcwTERCVUxJQWdwQXpBaEhFR3dDQXdGQzBFQUlRY0NRQUpBQWtBQ1FBSkFBa0FDUUNBVVFmOEJjUTRJQUFFQ0F3UWNCUVljQ3lBSUtBSXdJQTQyQWdBTUd3c2dDQ2dDTUNBT05nSUFEQm9MSUFnb0FqQWdEcXczQXdBTUdRc2dDQ2dDTUNBT093RUFEQmdMSUFnb0FqQWdEam9BQUF3WEN5QUlLQUl3SUE0MkFnQU1GZ3NnQ0NnQ01DQU9yRGNEQUF3VkMwRUlJQW9nQ2tFSVRSc2hDaUFNUVFoeUlReEIrQUFoQndzZ0VTRUJJQWdwQXpBaUhFSUFVZ1JBSUFkQklIRWhEUU5BSUFGQkFXc2lBU0FjcDBFUGNVSFF4QUZxTFFBQUlBMXlPZ0FBSUJ4Q0QxWWhHaUFjUWdTSUlSd2dHZzBBQ3dzZ0FTRU5JQWdwQXpCUURRTWdERUVJY1VVTkF5QUhRUVIyUWJBSWFpRVZRUUloRUF3REN5QVJJUUVnQ0NrRE1DSWNRZ0JTQkVBRFFDQUJRUUZySWdFZ0hLZEJCM0ZCTUhJNkFBQWdIRUlIVmlFYklCeENBNGdoSENBYkRRQUxDeUFCSVEwZ0RFRUljVVVOQWlBS0lCRWdBV3NpQVVFQmFpQUJJQXBJR3lFS0RBSUxJQWdwQXpBaUhFSUFVd1JBSUFoQ0FDQWNmU0ljTndNd1FRRWhFRUd3Q0F3QkN5QU1RWUFRY1FSQVFRRWhFRUd4Q0F3QkMwR3lDRUd3Q0NBTVFRRnhJaEFiQ3lFVklCd2dFUkFxSVEwTElCTWdDa0VBU0hFTkVTQU1RZi8vZTNFZ0RDQVRHeUVNQWtBZ0NDa0RNQ0ljUWdCU0RRQWdDZzBBSUJFaERVRUFJUW9NRGdzZ0NpQWNVQ0FSSUExcmFpSUJJQUVnQ2tnYklRb01EUXNnQ0NrRE1DRWNEQXNMQW45Qi8vLy8vd2NnQ2lBS1FmLy8vLzhIVHhzaURDSUhRUUJISVFrQ1FBSkFBa0FnQ0NnQ01DSUJRWVFNSUFFYklnMGlBVUVEY1VVTkFDQUhSUTBBQTBBZ0FTMEFBRVVOQWlBSFFRRnJJZ2RCQUVjaENTQUJRUUZxSWdGQkEzRkZEUUVnQncwQUN3c2dDVVVOQVFKQUlBRXRBQUJGRFFBZ0IwRUVTUTBBQTBCQmdJS0VDQ0FCS0FJQUlnbHJJQWx5UVlDQmdvUjRjVUdBZ1lLRWVFY05BaUFCUVFScUlRRWdCMEVFYXlJSFFRTkxEUUFMQ3lBSFJRMEJDd05BSUFFZ0FTMEFBRVVOQWhvZ0FVRUJhaUVCSUFkQkFXc2lCdzBBQ3d0QkFBc2lBU0FOYXlBTUlBRWJJZ0VnRFdvaENTQUtRUUJPQkVBZ0N5RU1JQUVoQ2d3TUN5QUxJUXdnQVNFS0lBa3RBQUFORHd3TEN5QUlLUU13SWh4Q0FGSU5BVUlBSVJ3TUNRc2dDZ1JBSUFnb0FqQU1BZ3RCQUNFSElBQkJJQ0FQUVFBZ0RCQWNEQUlMSUFoQkFEWUNEQ0FJSUJ3K0FnZ2dDQ0FJUVFocUlnYzJBakJCZnlFS0lBY0xJUXRCQUNFSEEwQUNRQ0FMS0FJQUlnMUZEUUFnQ0VFRWFpQU5FR2NpRFVFQVNBMFBJQTBnQ2lBSGEwc05BQ0FMUVFScUlRc2dCeUFOYWlJSElBcEpEUUVMQzBFOUlRa2dCMEVBU0EwTUlBQkJJQ0FQSUFjZ0RCQWNJQWRGQkVCQkFDRUhEQUVMUVFBaENTQUlLQUl3SVFzRFFDQUxLQUlBSWcxRkRRRWdDRUVFYWlJS0lBMFFaeUlOSUFscUlna2dCMHNOQVNBQUlBb2dEUkFaSUF0QkJHb2hDeUFISUFsTERRQUxDeUFBUVNBZ0R5QUhJQXhCZ01BQWN4QWNJQThnQnlBSElBOUlHeUVIREFnTElCTWdDa0VBU0hFTkNVRTlJUWtnQUNBSUt3TXdJQThnQ2lBTUlBY2dCUkVUQUNJSFFRQk9EUWNNQ2dzZ0J5MEFBU0VMSUFkQkFXb2hCd3dBQ3dBTElBQU5DU0FTUlEwRFFRRWhCd05BSUFRZ0IwRUNkR29vQWdBaUFBUkFJQU1nQjBFRGRHb2dBQ0FDSUFZUWFFRUJJUTRnQjBFQmFpSUhRUXBIRFFFTUN3c0xRUUVoRGlBSFFRcFBEUWtEUUNBRUlBZEJBblJxS0FJQURRRWdCMEVCYWlJSFFRcEhEUUFMREFrTFFSd2hDUXdHQ3lBSUlCdzhBQ2RCQVNFS0lCWWhEU0FMSVF3TElBb2dDU0FOYXlJTElBb2dDMG9iSWdvZ0VFSC8vLy8vQjNOS0RRTkJQU0VKSUE4Z0NpQVFhaUlCSUFFZ0QwZ2JJZ2NnRjBvTkJDQUFRU0FnQnlBQklBd1FIQ0FBSUJVZ0VCQVpJQUJCTUNBSElBRWdERUdBZ0FSekVCd2dBRUV3SUFvZ0MwRUFFQndnQUNBTklBc1FHU0FBUVNBZ0J5QUJJQXhCZ01BQWN4QWNJQWdvQWp3aEFRd0JDd3NMUVFBaERnd0RDMEU5SVFrTFFaVEhBU0FKTmdJQUMwRi9JUTRMSUFoQlFHc2tBQ0FPQzZnQ0FRUi9Jd0JCMEFGcklnVWtBQ0FGSUFJMkFzd0JJQVZCb0FGcUlnSkJBRUVvRUJVYUlBVWdCU2dDekFFMkFzZ0JBa0JCQUNBQklBVkJ5QUZxSUFWQjBBQnFJQUlnQXlBRUVHcEJBRWdOQUNBQUtBSk1RUUJJSVFnZ0FDQUFLQUlBSWdkQlgzRTJBZ0FDZndKQUFrQWdBQ2dDTUVVRVFDQUFRZEFBTmdJd0lBQkJBRFlDSENBQVFnQTNBeEFnQUNnQ0xDRUdJQUFnQlRZQ0xBd0JDeUFBS0FJUURRRUxRWDhnQUJBK0RRRWFDeUFBSUFFZ0JVSElBV29nQlVIUUFHb2dCVUdnQVdvZ0F5QUVFR29MSVFFZ0JnUi9JQUJCQUVFQUlBQW9BaVFSQUFBYUlBQkJBRFlDTUNBQUlBWTJBaXdnQUVFQU5nSWNJQUFvQWhRYUlBQkNBRGNERUVFQUJTQUJDeG9nQUNBQUtBSUFJQWRCSUhGeU5nSUFJQWdOQUFzZ0JVSFFBV29rQUFzbkFRRi9RUndoQXlBQlFRTnhCSDlCSEFVZ0FDQUJJQUlRSlNJQU5nSUFRUUJCTUNBQUd3c0wvUU1CQlg4Q2YwSGd4QUVvQWdBaUFpQUFRUWRxUVhoeElnRkJCMnBCZUhFaUEyb2hBQUpBSUFOQkFDQUFJQUpORzBVRVFDQUFQd0JCRUhSTkRRRWdBQkFLRFFFTFFaVEhBVUV3TmdJQVFYOE1BUXRCNE1RQklBQTJBZ0FnQWdzaUFrRi9Sd1JBSUFFZ0Ftb2lBRUVFYTBFUU5nSUFJQUJCRUdzaUEwRVFOZ0lBQWtBQ2YwR2d6d0VvQWdBaUFRUi9JQUVvQWdnRlFRQUxJQUpHQkVBZ0FpQUNRUVJyS0FJQVFYNXhheUlFUVFScktBSUFJUVVnQVNBQU5nSUlJQVFnQlVGK2NXc2lBQ0FBS0FJQWFrRUVheTBBQUVFQmNRUkFJQUFvQWdRaUFTQUFLQUlJSWdRMkFnZ2dCQ0FCTmdJRUlBQWdBeUFBYXlJQk5nSUFEQU1MSUFKQkVHc01BUXNnQWtFUU5nSUFJQUlnQURZQ0NDQUNJQUUyQWdRZ0FrRVFOZ0lNUWFEUEFTQUNOZ0lBSUFKQkVHb0xJZ0FnQXlBQWF5SUJOZ0lBQ3lBQUlBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0FBSi9JQUFvQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SURhM1pCQkhNZ0EwRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFOcmRrRUNjeUFEUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSURRYURIQVdvMkFnUWdBQ0FEUWFqSEFXb2lBeWdDQURZQ0NDQURJQUEyQWdBZ0FDZ0NDQ0FBTmdJRVFhalBBVUdvendFcEF3QkNBU0FCcllhRU53TUFDeUFDUVg5SEM3MEJBUUovQWtBZ0FDZ0NUQ0lCUVFCT0JFQWdBVVVOQVVITXp3RW9BZ0FnQVVILy8vLy9BM0ZIRFFFTEFrQWdBQ2dDVUVFS1JnMEFJQUFvQWhRaUFTQUFLQUlRUmcwQUlBQWdBVUVCYWpZQ0ZDQUJRUW82QUFBUEN5QUFFRzhQQ3lBQVFjd0FhaUlCSUFFb0FnQWlBa0gvLy8vL0F5QUNHellDQUFKQUFrQWdBQ2dDVUVFS1JnMEFJQUFvQWhRaUFpQUFLQUlRUmcwQUlBQWdBa0VCYWpZQ0ZDQUNRUW82QUFBTUFRc2dBQkJ2Q3lBQktBSUFHaUFCUVFBMkFnQUxmQUVDZnlNQVFSQnJJZ0VrQUNBQlFRbzZBQThDUUFKQUlBQW9BaEFpQWdSL0lBSUZJQUFRUGcwQ0lBQW9BaEFMSUFBb0FoUWlBa1lOQUNBQUtBSlFRUXBHRFFBZ0FDQUNRUUZxTmdJVUlBSkJDam9BQUF3QkN5QUFJQUZCRDJwQkFTQUFLQUlrRVFBQVFRRkhEUUFnQVMwQUR4b0xJQUZCRUdva0FBdXdBZ0VDZnlBQUJFQWdBQ2dDQUJBNElBQkJBRFlDQUNBQUtBSklJZ0VFUUNBQkVCQWdBRUVBTmdKSUN5QUFLQUpFSWdFRVFDQUJFQkFnQUVFQU5nSkVDeUFBS0FKc0lnRUVRQ0FCRUJBZ0FFRUFOZ0pzQ3lBQUtBSjBJZ0VFUUNBQktBSUFJZ0lFUUNBQ0VCQWdBQ2dDZENJQlFRQTJBZ0FMSUFFUUVDQUFRUUEyQW5RTElBQW9BbmdpQVFSQUlBRW9BZ3dpQWdSQUlBSVFFQ0FBS0FKNElnRkJBRFlDREFzZ0FTZ0NCQ0lDQkVBZ0FoQVFJQUFvQW5naUFVRUFOZ0lFQ3lBQktBSUlJZ0lFUUNBQ0VCQWdBQ2dDZUNJQlFRQTJBZ2dMSUFFb0FnQWlBZ1JBSUFJUUVDQUFLQUo0SWdGQkFEWUNBQXNnQVJBUUlBQkJBRFlDZUFzZ0FDZ0NCQ0lCQkVBZ0FSQXlJQUJCQURZQ0JBc2dBQ2dDQ0NJQkJFQWdBUkF5SUFCQkFEWUNDQXNnQUJBUUN3dUxHd0llZndWN0l3QkI4QUZySWdra0FFRUJJUTRDUUNBQUtBSUFLQUk4RFFBZ0FDZ0NnQUVOQUFKQUFrQWdBQ2dDZENJSVJRUkFJQUFvQW5naEJBd0JDeUFCS0FJUUlRTWdDQzhCQkNFR0FrQWdBQ2dDZUNJRVJRMEFJQVFvQWd4RkRRQWdCQzBBRWlFREN3SkFJQVlFUUNBSUtBSUFJUWdEUUNBSUlBVkJCbXhxSWdvdkFRQWlCeUFEVHdSQUlBa2dBellDdEFFZ0NTQUhOZ0t3QVNBQ1FRRkJvT1lBSUFsQnNBRnFFQTlCQUNFT0RBWUxBa0FnQ2k4QkJDSUtSUTBBSUFwQi8vOERSZzBBSUFwQkFXc2lDaUFEU1EwQUlBa2dBellDcEFFZ0NTQUtOZ0tnQVNBQ1FRRkJvT1lBSUFsQm9BRnFFQTlCQUNFT0RBWUxJQVZCQVdvaUJTQUdSdzBBQ3d3QkN5QUREUUlNQVFzRFFDQURRUUZySVFOQkFDRUZBMEFnQ0NBRlFRWnNhaThCQUNBRFJ3UkFJQVZCQVdvaUJTQUdSdzBCREFRTEN5QUREUUFMQ3dKQUlBUkZEUUFnQkNnQ0RDSUtSUTBBQWtBQ1FDQUVMUUFTSWdnRVFFRUFJUVZCQVNFSEEwQWdBU2dDRUNJRElBb2dCVUVDZEdvdkFRQWlCRTBFUUNBSklBTTJBcFFCSUFrZ0JEWUNrQUVnQWtFQlFhRG1BQ0FKUVpBQmFoQVBRUUFoQndzZ0JVRUJhaUlGSUFoSERRQUxJQWhCQkJBVElnTkZEUUZCQUNFRkEwQUNRQ0FLSUFWQkFuUnFJZ1F0QUFJaUJrRUNUd1JBSUFrZ0JqWUNSQ0FKSUFVMkFrQWdBa0VCUWN2WkFDQUpRVUJyRUE5QkFDRUhEQUVMSUFnZ0JDMEFBeUlFVFFSQUlBa2dCRFlDZ0FFZ0FrRUJRWlBaQUNBSlFZQUJhaEFQUVFBaEJ3d0JDeUFESUFSQkFuUnFJUXNDUUNBR1FRRkhJZ3dOQUNBTEtBSUFSUTBBSUFrZ0JEWUNVQ0FDUVFGQnZOVUFJQWxCMEFCcUVBOUJBQ0VIREFFTEFrQWdCZzBBSUFSRkRRQWdDU0FFTmdKa0lBa2dCVFlDWUNBQ1FRRkJpdGdBSUFsQjRBQnFFQTlCQUNFSERBRUxBa0FnREEwQUlBUWdCVVlOQUNBSklBUTJBbmdnQ1NBRk5nSjBJQWtnQlRZQ2NDQUNRUUZCcnRnQUlBbEI4QUJxRUE5QkFDRUhEQUVMSUF0QkFUWUNBQXNnQlVFQmFpSUZJQWhIRFFBTFFRQWhCUU5BQWtBQ1FDQURJQVZCQW5RaUJHb29BZ0JGQkVBZ0JDQUthaTBBQWcwQkN5QUZRUUZxSWdVZ0NFY05BaUFIUlEwQklBRW9BaEJCQVVjTkJVRUFJUVVEUUNBRElBVkJBblJxS0FJQUJFQWdDQ0FGUVFGcUlnVkhEUUVNQndzTFFRQWhCeUFDUVFKQjdzVUFRUUFRRHlBSVFSQlBCRUFnQ0VId0FYRWhCMEVBSVFRRFFDQUtJQVJCQW5ScUlnWkJBVG9BQWlBR0lBUTZBQU1nQmtFQk9nQStJQVpCQVRvQU9pQUdRUUU2QURZZ0JrRUJPZ0F5SUFaQkFUb0FMaUFHUVFFNkFDb2dCa0VCT2dBbUlBWkJBVG9BSWlBR1FRRTZBQjRnQmtFQk9nQWFJQVpCQVRvQUZpQUdRUUU2QUJJZ0JrRUJPZ0FPSUFaQkFUb0FDaUFHUVFFNkFBWWdCaUFFUVFGeU9nQUhJQVlnQkVFUGNqb0FQeUFHSUFSQkRuSTZBRHNnQmlBRVFRMXlPZ0EzSUFZZ0JFRU1jam9BTXlBR0lBUkJDM0k2QUM4Z0JpQUVRUXB5T2dBcklBWWdCRUVKY2pvQUp5QUdJQVJCQ0hJNkFDTWdCaUFFUVFkeU9nQWZJQVlnQkVFR2Nqb0FHeUFHSUFSQkJYSTZBQmNnQmlBRVFRUnlPZ0FUSUFZZ0JFRURjam9BRHlBR0lBUkJBbkk2QUFzZ0JFRVFhaUlFSUFkSERRQUxJQWNnQ0VZTkJnc0RRQ0FLSUFkQkFuUnFJZ1FnQnpvQUF5QUVRUUU2QUFJZ0IwRUJhaUlISUFoSERRQUxEQVVMSUFrZ0JUWUNNQ0FDUVFGQnlOSUFJQWxCTUdvUUQwRUFJUWNnQlVFQmFpSUZJQWhIRFFFTEN5QURFQkJCQUNFT0RBVUxJQWhCQkJBVElnTU5BUXRCQUNFT0lBSkJBVUdLMndCQkFCQVBEQU1MSUFNUUVBc0NRQ0FBS0FKNElnTkZEUUFnQXlnQ0RDSVBSUVJBSUFNb0FnUVFFQ0FBS0FKNEtBSUlFQkFnQUNnQ2VDZ0NBQkFRSUFBb0FuZ2lBeWdDRENJRUJIOGdCQkFRSUFBb0FuZ0ZJQU1MRUJBZ0FFRUFOZ0o0REFFTElBRW9BaGdoRFFKQUFrQWdBeTBBRWlJS0JFQWdBeWdDQUNFVUlBTW9BZ1FoQmlBREtBSUlJUWhCQUNFRkFrQURRQ0FOSUE4Z0JVRUNkR292QVFCQk5HeHFLQUlzQkVBZ0NpQUZRUUZxSWdWSERRRU1BZ3NMSUFrZ0JUWUNJQ0FDUVFGQnd1Y0FJQWxCSUdvUUQwRUFJUTRNQmdzZ0NrRTBiQkFVSWd0RkRRRkJBQ0VGQTBBZ0R5QUZRUUowYWlJREx3RUFJUWNnQ3lBRExRQUNCSDhnQXkwQUF3VWdCUXRCTkd4cUlnUWdEU0FIUVRSc2FpSUQvUUFDQVAwTEFnQWdCQ0FES0FJd05nSXdJQVFnQS8wQUFpRDlDd0lnSUFRZ0EvMEFBaEQ5Q3dJUUlBc2dCVUUwYkdvaUJDQURLQUlJSUFNb0FneHNRUUowRUJnaUF6WUNMQ0FEUlFSQUlBVUVRQ0FGUWYvL0EzRWhBQU5BSUFCQk5Hd2dDMnBCQ0dzb0FnQVFFQ0FBUVFGcklnQU5BQXNMSUFzUUVFRUFJUTRnQWtFQlFZN25BRUVBRUE4TUJ3c2dCQ0FGSUFocUxRQUFOZ0lZSUFRZ0JTQUdhaTBBQURZQ0lDQUZRUUZxSWdVZ0NrY05BQXNnQUNnQ2VDOEJFQ0lRUVFGcklSSURRQ0FMSUJOQk5HeHFJZ01vQWd3Z0F5Z0NDR3doQmlBTklBOGdFMEVDZEdvaUJDOEJBRUUwYkdvb0Fpd2hDQUpBSUFRdEFBSkZCRUFnQmtVTkFTQURLQUlzSVFWQkFDRUhRUUFoQkFKQUlBWkJCRWtOQUNBRklBaHJRUkJKRFFBZ0JrRjhjU0VFUVFBaEF3TkFJQVVnQTBFQ2RDSU1haUFJSUF4cS9RQUNBUDBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnQmtZTkFnc2dCQ0VESUFaQkEzRWlEQVJBQTBBZ0JTQURRUUowSWhGcUlBZ2dFV29vQWdBMkFnQWdBMEVCYWlFRElBZEJBV29pQnlBTVJ3MEFDd3NnQkNBR2EwRjhTdzBCQTBBZ0JTQURRUUowSWdScUlBUWdDR29vQWdBMkFnQWdCU0FFUVFScUlnZHFJQWNnQ0dvb0FnQTJBZ0FnQlNBRVFRaHFJZ2RxSUFjZ0NHb29BZ0EyQWdBZ0JTQUVRUXhxSWdScUlBUWdDR29vQWdBMkFnQWdBMEVFYWlJRElBWkhEUUFMREFFTElBWkZEUUFnRkNBRUxRQURJZ05CQW5ScUlRUWdDeUFEUVRSc2FpZ0NMQ0VGUVFBaEF5QUdRUUZIQkVBZ0JrRitjU0VWUVFBaERBTkFJQVVnQTBFQ2RDSUhhaUFFSUFjZ0NHb29BZ0FpRVNBU0lCQWdFVW9iUVFBZ0VVRUFUaHNnQ214QkFuUnFLQUlBTmdJQUlBVWdCMEVFY2lJSGFpQUVJQWNnQ0dvb0FnQWlCeUFTSUFjZ0VFZ2JRUUFnQjBFQVRoc2dDbXhCQW5ScUtBSUFOZ0lBSUFOQkFtb2hBeUFNUVFKcUlnd2dGVWNOQUFzTElBWkJBWEZGRFFBZ0JTQURRUUowSWdOcUlBUWdBeUFJYWlnQ0FDSURJQklnQXlBUVNCdEJBQ0FEUVFCT0d5QUtiRUVDZEdvb0FnQTJBZ0FMSUJOQkFXb2lFeUFLUncwQUN3d0NDeUFLUVRSc0VCUWlDdzBCQzBFQUlRNGdBa0VCUVk3bkFFRUFFQThNQXdzZ0FTZ0NFQ0lEQkVCQkFDRUZBMEFnRFNBRlFUUnNhaWdDTENJRUJFQWdCQkFRQ3lBRlFRRnFJZ1VnQTBjTkFBc0xJQTBRRUNBQklBbzJBaEFnQVNBTE5nSVlDeUFBS0FKMElnVkZEUUVnQlNnQ0FDRUhJQVV2QVFRaUN3UkFJQWRCS21vaEVpQUhRU1JxSVJNZ0IwRWVhaUVSSUFkQkdHb2hGQ0FIUVJKcUlSVWdCMEVNYWlFV0lBZEJCbW9oRnlBTFFRSnJJUmhCQUNFRlFRRWhCQU5BQWtBZ0FTZ0NFQ0lESUFjZ0JVRUdiR29pRFM4QkFDSUdUUVJBSUFrZ0F6WUNGQ0FKSUFZMkFoQWdBa0VDUWN3M0lBbEJFR29RRHd3QkN5QU5Md0VFSWdoQkFXcEIvLzhEY1VFQlRRUkFJQUVvQWhnZ0JrRTBiR29nRFM4QkFqc0JNQXdCQ3lBSVFRRnJJZ3BCLy84RGNTSVBJQU5QQkVBZ0NTQUROZ0lFSUFrZ0R6WUNBQ0FDUVFKQm96Y2dDUkFQREFFTEFrQWdCaUFQUmcwQUlBMHZBUUlOQUNBSklBRW9BaGdpQ0NBR1FUUnNhaUlES0FJd05nTG9BU0FKSUFQOUFBSWcvUXNEMkFFZ0NTQUQvUUFDRVAwTEE4Z0JJQWtnQS8wQUFnRDlDd080QVNBRElBZ2dEMEUwYkNJTWFpSUlLUUlJTndJSUlBTWdDQ2tDRURjQ0VDQURJQWdwQWhnM0FoZ2dBeUFJS1FJZ053SWdJQU1nQ0NrQ0tEY0NLQ0FESUFnb0FqQTJBakFnQXlBSUtRSUFOd0lBSUFFb0FoZ2dER29pQXlBSi9RQUR1QUg5Q3dJQUlBTWdDZjBBQTlnQi9Rc0NJQ0FESUFuOUFBUElBZjBMQWhBZ0F5QUpLQUxvQVRZQ01DQUZRUUZxSUF0UERRQWdCQ0VJSUJnZ0JXdEIvLzhEY1NJRFFRZFBCRUFnQkNBRFFRRnFJaGxCK1A4SGNTSVFhaUVJSUFyOUVDRWtJQWI5RUNFalFRQWhEQU5BSUNNZ0pDQVNJQVFnREdwQkJtd2lBMm9pR2lBRElCTnFJaHNnQXlBUmFpSWNJQU1nRkdvaUhTQURJQlZxSWg0Z0F5QVdhaUlmSUFNZ0Yyb2lJQ0FESUFkcUlnUDlDQUVBL1ZVQkFBSDlWUUVBQXYxVkFRQUQvVlVCQUFUOVZRRUFCZjFWQVFBRy9WVUJBQWNpSVNBai9TNGdJU0FrL1MwaUpmMU8vVkloSWlBaElDUDlMU0FsL1ZBaUlmMFpBRUVCY1FSQUlBTWdJdjFaQVFBQUN5QWgvUmtCUVFGeEJFQWdJQ0FpL1ZrQkFBRUxJQ0g5R1FKQkFYRUVRQ0FmSUNMOVdRRUFBZ3NnSWYwWkEwRUJjUVJBSUI0Z0l2MVpBUUFEQ3lBaC9Sa0VRUUZ4QkVBZ0hTQWkvVmtCQUFRTElDSDlHUVZCQVhFRVFDQWNJQ0w5V1FFQUJRc2dJZjBaQmtFQmNRUkFJQnNnSXYxWkFRQUdDeUFoL1JrSFFRRnhCRUFnR2lBaS9Wa0JBQWNMSUF4QkNHb2lEQ0FRUncwQUN5QVFJQmxHRFFFTEEwQWdDaUVEQWtBZ0JpQUhJQWhCQm14cUlnd3ZBUUFpRUVjRVFDQUdJUU1nRHlBUVJ3MEJDeUFNSUFNN0FRQUxJQXNnQ0VFQmFpSUlRZi8vQTNGSERRQUxDeUFCS0FJWUlBWkJOR3hxSUEwdkFRSTdBVEFMSUFSQkFXb2hCQ0FGUVFGcUlnVWdDMGNOQUFzZ0FDZ0NkQ0lGS0FJQUlRY0xJQWNFZnlBSEVCQWdBQ2dDZEFVZ0JRc1FFQ0FBUVFBMkFuUU1BUXRCQUNFT0lBSkJBVUdoeGdCQkFCQVBDeUFKUWZBQmFpUUFJQTRMNlFFQkJuOGpBRUVnYXlJRUpBQUNmd0pBSUFBb0Fqd2lBd1JBUVFFaEJRTkFJQUFvQWt3b0FoZ2dBQ2dDUUNBQ1FRSjBhaWdDQUNJR1FUUnNhaWdDTEVVRVFDQUVJQVkyQWhBZ0FVRUNRZG81SUFSQkVHb1FEMEVBSVFVZ0FDZ0NQQ0VEQ3lBQ1FRRnFJZ0lnQTBrTkFBc01BUXRCQVNFRlFRRWdBQ2dDVENJREtBSVFSUTBCR2dOQUlBTW9BaGdnQWtFMGJHb29BaXhGQkVBZ0JDQUNOZ0lBSUFGQkFrSGFPU0FFRUE5QkFDRUZJQUFvQWt3aEF3c2dBa0VCYWlJQ0lBTW9BaEJKRFFBTEMwRUJJQVVOQUJvZ0FVRUJRYjhWUVFBUUQwRUFDeUVISUFSQklHb2tBQ0FIQ3dRQVFYOExoZ2NDRm44Q2ZpQUFLQUlZSWhBb0FoQkZCRUJCQVE4TElCQW9BaGdoRFNBQUtBSVVLQUlBS0FJVUlRc0RRQ0FCSUEwb0FpUWlBallDSkNBTEtBSWNJZ1lnQWtHWUFXeHFJUU1DUUFKQUFuOGdBQ2dDUUNJUkJFQWdCaUFMS0FJWVFaZ0JiR29pQWtHUUFXc29BZ0FnQWtHWUFXc29BZ0JySVF3Z0EwRU1haUVHSUFOQkJHb2hCQ0FES0FJSUlRSWdBeWdDQUNFRlFTUU1BUXNnQTBHVUFXb2hCaUFEUVl3QmFpRUVJQU1vQXBBQklnSWdBeWdDaUFFaUJXc2hERUUwQ3lBTGFpZ0NBQ0lTUlEwQUlBUW9BZ0FoQnlBR0tBSUFJUWtnQWlBRmF5RUdJQUVvQWdnaUEwSi9JQUUxQWlnaUdJWkNmNFVpR1NBQk5RSVFmQ0FZaUtjaUNHb2hCQUovSUFVZ0NFc0VRQ0FGSUFocklRNUJBQ0VJUVFBZ0FpQUVUUTBCR2lBR0lBUWdCV3NpQm1zTUFRc2dDQ0FGYXlFSUlBSWdCRTBFUUNBR0lBaHJJUVpCQUNFT1FRQU1BUXRCQUNFT0lBTWhCaUFDSUFSckN5RVZJQWtnQjJzaEFpQUJLQUlNSWdRZ0dTQUJOUUlVZkNBWWlLY2lDbW9oQlFKL0lBY2dDa3NFUUNBSElBcHJJUTlCQUNFS1FRQWdCU0FKVHcwQkdpQUNJQVVnQjJzaUFtc01BUXNnQ2lBSGF5RUtJQVVnQ1U4RVFDQUNJQXBySVFKQkFDRVBRUUFNQVF0QkFDRVBJQVFoQWlBSklBVnJDeUVIUVFBaEJTQUlRUUJJRFFFZ0NrRUFTQTBCSUJWQkFFZ05BU0FIUVFCSURRRWdCa0VBU0EwQklBSkJBRWdOQVNBRElBOXNJQTVxSVFjZ0NpQU1iQ0FJYWlFSkFrQUNRQUpBSUFFb0Fpd2lDQTBBSUFrTkFDQUhEUUFnQXlBTVJ3MEFJQU1nQmtjTkFDQUNJQVJIRFFFZ0FTQUxRU1JCTkNBUkcyb2lBaWdDQURZQ0xDQUNRUUEyQWdBTUF3c2dDQTBCQ3lBRVJRMENJQVN0SUFPdGZrSWdpS2NOQWlBRElBUnNJZ05CLy8vLy93TkxEUUlnQVNBRFFRSjBFQmdpQXpZQ0xDQURSUTBDSUFZZ0FTZ0NDQ0lFUmlBQktBSU1JZ1VnQWtaeERRQWdBMEVBSUFRZ0JXeEJBblFRRlJvTElBSkZEUUFnQWtFQmNTRVhJQVpCQW5RaEJpQUJLQUlzSUFkQkFuUnFJUVFnRWlBSlFRSjBhaUVGSUFKQkFVY0VRQ0FDUWY3Ly8vOEhjU0VIUVFBaEFnTkFJQVFnQlNBR0VCSWhGaUFGSUF4QkFuUWlDV29pQ0NBSmFpRUZJQllnQVNnQ0NFRUNkR29nQ0NBR0VCSWdBU2dDQ0VFQ2RHb2hCQ0FDUVFKcUlnSWdCMGNOQUFzTElCZEZEUUFnQkNBRklBWVFFaG9MSUF0QnpBQnFJUXNnRFVFMGFpRU5JQUZCTkdvaEFVRUJJUVVnRkVFQmFpSVVJQkFvQWhCSkRRRUxDeUFGQzlVU0FnbC9ESDRqQUVHZ0FXc2lCU1FBQWtBZ0FrRWpUUVJBUVFBaEFpQURRUUZCdGk1QkFCQVBEQUVMSUFKQkpHc2lBaUFDUVFOdUlnbEJBMnhIQkVCQkFDRUNJQU5CQVVHMkxrRUFFQThNQVFzZ0FDZ0NTQ0VHSUFFZ0JVR2NBV29pQWtFQ0VCRWdBQ0FGS0FLY0FUc0JVQ0FCUVFKcUlBWkJDR3BCQkJBUklBRkJCbW9nQmtFTWFrRUVFQkVnQVVFS2FpQUdRUVFRRVNBQlFRNXFJQVpCQkdwQkJCQVJJQUZCRW1vZ0FFSGNBR3BCQkJBUklBRkJGbW9nQUVIZ0FHcEJCQkFSSUFGQkdtb2dBRUhVQUdwQkJCQVJJQUZCSG1vZ0FFSFlBR3BCQkJBUklBRkJJbW9nQWtFQ0VCRUNRQUpBQWtBZ0JTZ0NuQUVpQWtHQWdBRk5CRUFnQmlBQ05nSVFJQUlnQ1VjRVFDQUZJQWsyQW9RQklBVWdBallDZ0FFZ0EwRUJRWkh3QUNBRlFZQUJhaEFQUVFBaEFnd0ZDeUFHS0FJRUlnSWdCaWdDRENJSVNTQUdLQUlJSWdzZ0JpZ0NBQ0lFUzNGRkJFQWdCU0FJclNBQ3JYMDNBM2dnQlNBTHJTQUVyWDAzQTNBZ0EwRUJRZHZzQUNBRlFmQUFhaEFQUVFBaEFnd0ZDeUFBS0FKY0lnZEJBQ0FBS0FKZ0lnb2JSUVJBSUFVZ0NqWUNCQ0FGSUFjMkFnQWdBMEVCUVlQeEFDQUZFQTlCQUNFQ0RBVUxBa0FDUUNBQUtBSlVJZ3dnQkVzTkFFRi9JQWNnREdvaUJ5QUhJQXhKR3lBRVRRMEFJQUFvQWxnaUJ5QUNTdzBBUVg4Z0J5QUthaUlLSUFjZ0Nrc2JJQUpMRFFFTFFRQWhBaUFEUVFGQjFoUkJBQkFQREFVTEFrQWdBQ2dDNEFFTkFDQUFLQUxZQVNJSFJRMEFJQUFvQXR3QklncEZEUUFnQ3lBRWF5SUVJQWRHSUFnZ0Ftc2lBaUFLUm5FTkFDQUZJQUkyQW13Z0JTQUVOZ0pvSUFVZ0NqWUNaQ0FGSUFjMkFtQWdBMEVCUWNQb0FDQUZRZUFBYWhBUFFRQWhBZ3dGQ3lBR0lBbEJOQkFUSWdRMkFoZ2dCRVVOQVFKQUlBWW9BaEJGRFFBZ0FVRWthaUFGUVpnQmFpSUNRUUVRRVNBRUlBVW9BcGdCSWdsQkIzWWlDallDSUNBRUlBbEIvd0J4UVFGcUlndzJBaGdnQUNnQzRBRWhDeUFCUVNWcUlBSkJBUkFSSUFRZ0JTZ0NtQUUyQWdBZ0FVRW1haUFDUVFFUUVTQUVJQVVvQXBnQklnZzJBZ1JCQUNFQ0lBUW9BZ0FpQjBHQUFtdEJnWDVKQkVCQkFDRUpEQVVMUVFBaENTQUlRWUFDYTBHQmZra05CQ0FFS0FJWUlnaEJIMHNOQXlBRVFRQTJBaVFnQkNBQUtBS2dBVFlDS0VFQklRa2dCaWdDRUVFQlRRMEFRUUFnQ2lBTEd5RUtRUUFnRENBTEd5RUxJQUZCSjJvaEFRTkFJQUVnQlVHWUFXcEJBUkFSSUFRZ0JTZ0NtQUVpQjBFSGRpSUlOZ0pVSUFRZ0IwSC9BSEZCQVdvaUJ6WUNUQUpBSUFBb0F1QUJEUUFnQUMwQXZBRkJCSEVOQUNBSElBdEdJQWdnQ2taeERRQWdCU0FJTmdKVUlBVWdCellDVUNBRklBazJBa3dnQlNBS05nSklJQVVnQ3pZQ1JDQUZJQWsyQWtBZ0EwRUNRY2Z1QUNBRlFVQnJFQThMSUFGQkFXb2dCVUdZQVdvaUNFRUJFQkVnQkNBRktBS1lBVFlDTkNBQlFRSnFJQWhCQVJBUklBUWdCU2dDbUFFaUNEWUNPQ0FFS0FJMElnZEJnQUpyUVlGK1NRMEZJQWhCZ0FKclFZQitUUTBGSUFRb0Frd2lDRUVnVHcwRUlBRkJBMm9oQVNBRVFRQTJBbGdnQkNBQUtBS2dBVFlDWENBRVFUUnFJUVFnQ1VFQmFpSUpJQVlvQWhCSkRRQUxDMEVBSVFJZ0FDZ0NYQ0lJUlEwRUlBQW9BbUFpQzBVTkJDQUFJQWl0SWcxQ0FYMGlEeUFHS0FJSUlBQW9BbFFpQjJ1dGZDQU5nS2NpQVRZQ2FDQUFJQXV0SWc1Q0FYMGlFQ0FHS0FJTUlBQW9BbGdpQ211dGZDQU9nS2NpQkRZQ2JBSkFBa0FnQVVVTkFDQUVSUTBBUWYvL0F5QUViaUFCVHcwQkN5QUZJQVEyQWhRZ0JTQUJOZ0lRSUFOQkFVRzE2UUFnQlVFUWFoQVBEQVVMSUFFZ0JHd2hDUUpBSUFBdEFFUkJBbkVFUUNBQUlBQW9BaHdnQjJzZ0NHNDJBaHdnQUNBQUtBSWdJQXBySUF0dU5nSWdJQUFnRHlBQUtBSWtJQWRyclh3Z0RZQStBaVFnQUNBUUlBQW9BaWdnQ211dGZDQU9nRDRDS0F3QkN5QUFJQVEyQWlnZ0FDQUJOZ0lrSUFCQ0FEY0NIQXNnQUNBSlFZd3NFQk1pQVRZQ25BRWdBVVVFUUNBRFFRRkJ6UjFCQUJBUERBVUxJQVlvQWhCQnVBZ1FFeUVCSUFBb0Fnd2dBVFlDMENzZ0FDZ0NEQ2dDMEN0RkJFQWdBMEVCUWMwZFFRQVFEd3dGQzBFS1FSUVFFeUVCSUFBb0Fnd2dBVFlDOENzZ0FDZ0NEQ0lCS0FMd0swVUVRQ0FEUVFGQnpSMUJBQkFQREFVTElBRkJDallDK0N0QkNrRVVFQk1oQVNBQUtBSU1JQUUyQXZ3cklBQW9BZ3dpQVNnQy9DdEZCRUFnQTBFQlFjMGRRUUFRRHd3RkN5QUJRUW8yQW9Rc0FrQWdCaWdDRUNJRVJRMEFJQVlvQWhnaENFRUFJUUVnQkVFQlJ3UkFJQVJCZm5FaEN3TkFJQWdnQVVFMGJHb2lCeWdDSUVVRVFDQUFLQUlNS0FMUUt5QUJRYmdJYkdwQkFTQUhLQUlZUVFGcmREWUN0QWdMSUFnZ0FVRUJjaUlIUVRSc2FpSUtLQUlnUlFSQUlBQW9BZ3dvQXRBcklBZEJ1QWhzYWtFQklBb29BaGhCQVd0ME5nSzBDQXNnQVVFQ2FpRUJJQUpCQW1vaUFpQUxSdzBBQ3dzZ0JFRUJjVVVOQUNBSUlBRkJOR3hxSWdJb0FpQU5BQ0FBS0FJTUtBTFFLeUFCUWJnSWJHcEJBU0FDS0FJWVFRRnJkRFlDdEFnTElBa0VRQ0FBS0FLY0FTRUJRUUFoQWdOQUlBRWdCaWdDRUVHNENCQVRJZ1EyQXRBcklBUkZCRUJCQUNFQ0lBTkJBVUhOSFVFQUVBOE1Cd3NnQVVHTUxHb2hBU0FDUVFGcUlnSWdDVWtOQUFzTElBQkJCRFlDQ0NBR0tBSVFJZ01FUUVGL0lBQW9BbGdpQVNBQUtBSmdJZ0lnQUNnQ2JFRUJhMnhxSWdRZ0Ftb2lBaUFDSUFSSkd5SUNJQVlvQWd3aUJDQUNJQVJKRzYwaEVFRi9JQUFvQWxRaUFpQUFLQUpjSWdRZ0FDZ0NhRUVCYTJ4cUlnQWdCR29pQkNBQUlBUkxHeUlBSUFZb0FnZ2lCQ0FBSUFSSkc2MGhFU0FCSUFZb0FnUWlBQ0FBSUFGSkc2MGhFaUFDSUFZb0FnQWlBQ0FBSUFKSkc2MGhFeUFHS0FJWUlRQkJBQ0VCQTBBZ0FDQUFOUUlFSWcxQ0FYMGlGQ0FTZkNBTmdDSVZQZ0lVSUFBZ0FEVUNBQ0lPUWdGOUloWWdFM3dnRG9BaUZ6NENFQ0FBUW44Z0FEVUNLQ0lQaGtKL2hTSVlJQkFnRkh3Z0RZQWdGWDFDLy8vLy93K0RmQ0FQaUQ0Q0RDQUFJQkVnRm53Z0RvQWdGMzFDLy8vLy93K0RJQmg4SUErSVBnSUlJQUJCTkdvaEFDQUJRUUZxSWdFZ0EwY05BQXNMUVFFaEFnd0VDeUFGSUFJMkFwQUJJQU5CQVVIMk95QUZRWkFCYWhBUFFRQWhBZ3dEQzBFQUlRSWdCa0VBTmdJUUlBTkJBVUhOSFVFQUVBOE1BZ3NnQlNBSU5nSTBJQVVnQ1RZQ01DQURRUUZCdC9NQUlBVkJNR29RRHd3QkN5QUZJQWcyQWlnZ0JTQUhOZ0lrSUFVZ0NUWUNJQ0FEUVFGQmtlc0FJQVZCSUdvUUR3c2dCVUdnQVdva0FDQUNDNTREQVFkL0l3QkJFR3NpQmlRQUFuOGdBaUFDUVFGQkFpQUFLQUpJS0FJUUlnaEJnUUpKR3lJSFFRRjBRUVZxSWdSdUlnVWdCR3hHSUFJZ0JFOXhSUVJBSUFOQkFVR0tJMEVBRUE5QkFBd0JDd0ovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFSQkFDRUFJQVF0QUlnc0lnSkJCSEVFUUNBRUtBS2tBMEVCYWlFQUN5QUFJQVZxSWdWQklFOEVRQ0FHSUFVMkFnQWdBMEVCUVlzN0lBWVFEMEVBREFFTElBUWdBa0VFY2pvQWlDd2dBQ0FGU1FSQUlBUWdBRUdVQVd4cVFhZ0RhaUVDQTBBZ0FTQUNRUUVRRVNBQlFRRnFJZ0VnQWtFRWFpQUhFQkVnQVNBSGFpSUJJQUpCQ0dwQkFoQVJJQUlnQWlnQ0NDSURJQVFvQWdnaUNTQURJQWxKR3pZQ0NDQUJRUUpxSUFKQkRHcEJBUkFSSUFGQkEyb2lBU0FDUVJCcUlBY1FFU0FCSUFkcUlnRWdCa0VNYWtFQkVCRWdBaUFHS0FJTU5nSWtJQUlnQWlnQ0VDSURJQWdnQXlBSVNSczJBaEFnQWtHVUFXb2hBaUFCUVFGcUlRRWdBRUVCYWlJQUlBVkhEUUFMQ3lBRUlBVkJBV3MyQXFRRFFRRUxJUW9nQmtFUWFpUUFJQW9MN0FFQkJIOGpBRUVRYXlJRUpBQUNmd0pBSUFFZ0JFRUlhZ0ovSUFBb0FrZ29BaEJCZ0FKTkJFQWdBZ1JBUVg4aEJVRUJEQUlMSUFOQkFVRytJMEVBRUE5QkFBd0RDeUFDUVFGTkRRRkJmaUVGUVFJTElnWVFFU0FFSUFJZ0JXbzJBZ3dnQkNnQ0NDSUNJQUFvQWtnb0FoQWlCVThFUUNBRUlBVTJBZ1FnQkNBQ05nSUFJQU5CQVVIR09pQUVFQTlCQUF3Q0N5QUFJQUlnQVNBR2FpQUVRUXhxSUFNUVFrVUVRQ0FEUVFGQnZpTkJBQkFQUVFBTUFndEJBU0FFS0FJTVJRMEJHaUFEUVFGQnZpTkJBQkFQUVFBTUFRc2dBMEVCUWI0alFRQVFEMEVBQ3lFSElBUkJFR29rQUNBSEM5a0JBUVIvSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQUpBQWtBZ0FFRUFJQUVnQkVFTWFpQURFRUpGRFFBZ0JDZ0NEQTBBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvTUFRc2dBQ2dDREFzaEIwRUJJUVVnQUNnQ1NDZ0NFRUVDU1EwQklBY29BdEFySWdKQkhHb2hCa0VCSVFFZ0FpRURBMEFnQXlBQ0tBSVlOZ0xRQ0NBRElBSW9BcVFHTmdMY0RpQURRZFFJYWlBR1FZZ0dFQklhSUFOQnVBaHFJUU1nQVVFQmFpSUJJQUFvQWtnb0FoQkpEUUFMREFFTElBTkJBVUhXSWtFQUVBOExJQVJCRUdva0FDQUZDOVlCQVFOL0l3QkJFR3NpQkNRQUFrQWdBa0VCUVFJZ0FDZ0NTQ2dDRUNJR1FZRUNTUnNpQlVFQ2FrY0VRRUVBSVFBZ0EwRUJRWW9nUVFBUUR3d0JDd0ovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFJZ0FTQUVRUXhxSUFVUUVVRUJJUUFnQVNBRmFpSUZJQVJCQ0dwQkFSQVJJQVlnQkNnQ0RDSUJUUVJBSUFRZ0JqWUNCQ0FFSUFFMkFnQWdBMEVCUWRqdkFDQUVFQTlCQUNFQURBRUxJQVZCQVdvZ0FpZ0MwQ3NnQVVHNENHeHFRYWdHYWtFQkVCRUxJQVJCRUdva0FDQUFDNFFDQVFWL0l3QkJFR3NpQkNRQUFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hCZ0pBSUFKQkFVRUNJQUFvQWtnaUJ5Z0NFRUdCQWtrYklnVk5CRUJCQUNFQ0lBTkJBVUdrSTBFQUVBOE1BUXNnQkNBRlFYOXpJQUpxTmdJTUlBRWdCRUVJYWlBRkVCRWdCQ2dDQ0NJSUlBY29BaEJQQkVCQkFDRUNJQU5CQVVHQTZRQkJBQkFQREFFTFFRRWhBaUFCSUFWcUlnRWdCaWdDMENzZ0NFRzRDR3hxUVFFUUVTQUFJQVFvQWdnZ0FVRUJhaUFFUVF4cUlBTVFRMFVFUUVFQUlRSWdBMEVCUWFRalFRQVFEd3dCQ3lBRUtBSU1SUTBBUVFBaEFpQURRUUZCcENOQkFCQVBDeUFFUVJCcUpBQWdBZ3VzQmdFSGZ5TUFRUkJySWdZa0FDQUdJQUkyQWd3Z0FDZ0NTQ0VKQW44Z0FDZ0NDRUVRUmdSQUlBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvTUFRc2dBQ2dDREFzaUJDQUVMUUNJTEVFQmNqb0FpQ3dDUUNBQ1FRUk5CRUFnQTBFQlFid2lRUUFRRHd3QkN5QUJJQVJCQVJBUklBUW9BZ0JCQ0U4RVFDQURRUUZCbWlKQkFCQVBEQUVMSUFGQkFXb2dCa0VJYWtFQkVCRWdCQ0FHS0FJSUlnSTJBZ1FnQWtFRlRnUkFJQU5CQVVIeElVRUFFQThnQkVGL05nSUVDeUFCUVFKcUlBUkJDR3BCQWhBUklBUW9BZ2dpQjBHQWdBUnJRWUNBZkUwRVFDQUdJQWMyQWdBZ0EwRUJRYWs5SUFZUUR3d0JDeUFFSUFBb0FxUUJJZ0lnQnlBQ0d6WUNEQ0FCUVFScUlBUkJFR3BCQVJBUklBUW9BaEJCQWs4RVFDQURRUUZCaHlwQkFCQVBEQUVMSUFGQkJXb2hBaUFHSUFZb0FneEJCV3MyQWd3Q1FDQUpLQUlRSWdkRkRRQWdCQ2dDQUVFQmNTRUlJQVFvQXRBcklRUkJBQ0VKSUFkQkNFOEVRQ0FIUVhoeElRRURRQ0FFSUFWQnVBaHNhaUFJTmdJQUlBUWdCVUVCY2tHNENHeHFJQWcyQWdBZ0JDQUZRUUp5UWJnSWJHb2dDRFlDQUNBRUlBVkJBM0pCdUFoc2FpQUlOZ0lBSUFRZ0JVRUVja0c0Q0d4cUlBZzJBZ0FnQkNBRlFRVnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkJuSkJ1QWhzYWlBSU5nSUFJQVFnQlVFSGNrRzRDR3hxSUFnMkFnQWdCVUVJYWlFRklBcEJDR29pQ2lBQlJ3MEFDd3NnQjBFSGNTSUJSUTBBQTBBZ0JDQUZRYmdJYkdvZ0NEWUNBQ0FGUVFGcUlRVWdDVUVCYWlJSklBRkhEUUFMQzBFQUlRVWdBRUVBSUFJZ0JrRU1haUFERUVORkJFQWdBMEVCUWJ3aVFRQVFEd3dCQ3lBR0tBSU1CRUFnQTBFQlFid2lRUUFRRHd3QkN3Si9JQUFvQWdoQkVFWUVRQ0FBS0FLY0FTQUFLQUxNQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUUVnQUNnQ1NDZ0NFRUVDVHdSQUlBRW9BdEFySWdFb0FnUkJBblFoQnlBQlFiQUhhaUVLSUFGQnJBWnFJUU5CQVNFSklBRWhBZ05BSUFJZ0FmMEFBZ1Q5Q3dLOENDQUNJQUVvQWhRMkFzd0lJQUpCNUE1cUlBTWdCeEFTR2lBQ1FlZ1BhaUFLSUFjUUVob2dBa0c0Q0dvaEFpQUpRUUZxSWdrZ0FDZ0NTQ2dDRUVrTkFBc0xRUUVoQlFzZ0JrRVFhaVFBSUFVTDdBa0JCbjhqQUVId0FHc2lCQ1FBSUFSQkFEWUNhQUpBSUFKQkNFY0VRQ0FEUVFGQnZSNUJBQkFQSUFOQkFVRzlIa0VBRUE4TUFRc2dBU0FBUWN3QmFrRUNFQkVnQVVFQ2FpQUVRZXdBYWtFRUVCRWdBVUVHYWlBRVFlUUFha0VCRUJFZ0FVRUhhaUFFUWVnQWFrRUJFQkVnQUNnQ3pBRWlBaUFBS0FKb0lnZ2dBQ2dDYkd4UEJFQWdCQ0FDTmdKZ0lBTkJBVUdkT3lBRVFlQUFhaEFQREFFTElBQW9BcHdCSUFKQmpDeHNhaUVGSUFJZ0NHNGhCeUFFS0FKa0lRRUNRQ0FBS0FJc0lnWkJBRTRnQWlBR1IzRU5BQ0FGS0FMVUswRUJhaUlHSUFGR0RRQWdCQ0FHTmdKWUlBUWdBVFlDVkNBRUlBSTJBbEFnQTBFQlFiVTdJQVJCMEFCcUVBOUJBQ0VGREFFTElBVWdBVFlDMUNzQ1FBSkFJQVFvQW13aUFVRUJhMEVNVFFSL0lBRkJERWNOQVNBRVFRdzJBakFnQTBFQ1FlWFhBQ0FFUVRCcUVBOGdCQ2dDYkFVZ0FRdEZCRUFnQTBFRVFiTFBBRUVBRUE4Z0FFRUJOZ0k0Q3dKQUFrQUNRQUpBSUFVb0F0Z3JJZ0VFUUNBRUtBSmtJZ1lnQVVrTkFTQUVJQUUyQWlRZ0JDQUdOZ0lnSUFOQkFVR0ZKeUFFUVNCcUVBOGdBRUVCTmdJNFFRQWhCUXdIQ3lBRUtBSm9JZ1lOQVF3REN5QUVLQUpvSWdaRkRRRUxJQVFnQmlBQUxRQkVRUVIyUVFGeGFpSUJOZ0pvSUFRb0FtUWlCaUFGS0FMWUt5SUpRUUZyU3dSQUlBUWdDVFlDQkNBRUlBWTJBZ0FnQTBFQlFhSW1JQVFRRHlBQVFRRTJBamhCQUNFRkRBVUxJQUVnQmswRVFDQUVJQUUyQWhRZ0JDQUdOZ0lRSUFOQkFVSHBKeUFFUVJCcUVBOGdBRUVCTmdJNFFRQWhCUXdGQ3lBRklBRTJBdGdyQ3lBQklBUW9BbVJCQVdwSERRQWdBQ0FBTFFCRVFRRnlPZ0JFQ3lBRUtBSnNJUUVnQUVFUU5nSUlJQUJCQUNBQlFReHJJQUFvQWpnYk5nSVlBa0FnQUNnQ0xDSUJRWDlHQkVCQkJDRUZJQUlnQnlBSWJHc2lBU0FBS0FJY1NRMEJJQUVnQUNnQ0pFOE5BU0FISUFBb0FpQkpEUUVnQnlBQUtBSW9UMEVDZENFRkRBRUxJQUFvQXN3QklBRkhRUUowSVFVTElBQWdBQzBBUkVIN0FYRWdCWEk2QUVSQkFTRUZJQUFvQXNnQklnRkZEUUlnQVNnQ0tDSUdJQUFvQXN3QklnSkJLR3hxSWdjZ0FqWUNBQ0FISUFRb0FtUWlDRFlDRENBRUtBSm9JZ0VFUUNBSElBRTJBZ1FnQnlBRUtBSm9JZ0UyQWdnZ0J5Z0NFQ0lDUlFSQUlBRkJHQkFUSVFFZ0FDZ0N5QUVvQWlnZ0FDZ0N6QUZCS0d4cUlBRTJBaEFnQVEwRVFRQWhCU0FEUVFGQnlUUkJBQkFQREFRTElBSWdBVUVZYkJBWElRRWdBQ2dDeUFFb0FpZ2dBQ2dDekFGQktHeHFJUUlnQVVVRVFDQUNLQUlRRUJCQkFDRUZJQUFvQXNnQktBSW9JQUFvQXN3QlFTaHNha0VBTmdJUUlBTkJBVUhKTkVFQUVBOE1CQXNnQWlBQk5nSVFEQU1MSUFjb0FoQWlBVVVFUUNBSFFRbzJBZ2hCQ2tFWUVCTWhBU0FBS0FMSUFTZ0NLQ0lHSUFBb0Fzd0JJZ0pCS0d4cUlnY2dBVFlDRUNBQlJRMENJQVFvQW1RaENBc2dDQ0FHSUFKQktHeHFJZ0lvQWdoSkRRSWdBaUFJUVFGcUlnSTJBZ2dnQVNBQ1FSaHNFQmNoQVNBQUtBTElBU2dDS0NBQUtBTE1BVUVvYkdvaEFpQUJSUVJBSUFJb0FoQVFFRUVBSVFVZ0FDZ0N5QUVvQWlnZ0FDZ0N6QUZCS0d4cUlnQkJBRFlDQ0NBQVFRQTJBaEFnQTBFQlFjazBRUUFRRHd3REN5QUNJQUUyQWhBTUFnc2dCQ0FCTmdKQUlBTkJBVUh5MlFBZ0JFRkFheEFQUVFBaEJRd0JDMEVBSVFVZ0IwRUFOZ0lJSUFOQkFVSEpORUVBRUE4TElBUkI4QUJxSkFBZ0JRdXJCd0VJZnlNQVFkQUFheUlFSkFBZ0JFRUJOZ0pNQWtBQ1FDQUFLQUxJQVNJRktBSW9JZ01OQUNBRklBQW9BbXdnQUNnQ2FHd2lBellDSkNBRFFTZ1FFeUVESUFBb0FzZ0JJZ1VnQXpZQ0tDQURSUVJBUVFBaEJRd0NDeUFGS0FJa1JRMEFBMEJCQUNFRklBTWdCa0VvYkNJSGFpSURRUUEyQWhRZ0EwSGtBRFlDSEVIa0FFRVlFQk1oQ1NBSElBQW9Bc2dCSWdnb0FpZ2lBMm9nQ1RZQ0dDQUpSUTBDSUFaQkFXb2lCaUFJS0FJa1NRMEFDd3NnQUNnQ0xDRUpBa0FnQXlnQ0VFVU5BQUpBSUFNZ0NVRW9iR29pQXlnQ0JFVUVRQ0FCSUFBcEF6QkNBbndnQWhBMkRRRkJBQ0VGSUFKQkFVR25LVUVBRUE4TUF3c2dBU0FES0FJUUtRTUFRZ0o4SUFJUU5nMEFRUUFoQlNBQ1FRRkJweWxCQUJBUERBSUxJQUFvQWdoQmdBSkhEUUFnQUVFSU5nSUlDd0pBSUFBb0Ftd2dBQ2dDYUd3aUIwVU5BQ0FBS0FLY0FTRUZRUUFoQXlBSFFRaFBCRUFnQjBGNGNTRUlRUUFoQmdOQUlBVWdBMEdNTEd4cVFYODJBdFFySUFVZ0EwRUJja0dNTEd4cVFYODJBdFFySUFVZ0EwRUNja0dNTEd4cVFYODJBdFFySUFVZ0EwRURja0dNTEd4cVFYODJBdFFySUFVZ0EwRUVja0dNTEd4cVFYODJBdFFySUFVZ0EwRUZja0dNTEd4cVFYODJBdFFySUFVZ0EwRUdja0dNTEd4cVFYODJBdFFySUFVZ0EwRUhja0dNTEd4cVFYODJBdFFySUFOQkNHb2hBeUFHUVFocUlnWWdDRWNOQUFzTElBZEJCM0VpQmtVTkFBTkFJQVVnQTBHTUxHeHFRWDgyQXRRcklBTkJBV29oQXlBS1FRRnFJZ29nQmtjTkFBc0xRUUFoQlNBQUlBUkJ5QUJxUVFBZ0JFSEVBR29nQkVGQWF5QUVRVHhxSUFSQk9Hb2dCRUUwYWlBRVFjd0FhaUFCSUFJUUowVU5BQ0FKUVFGcUlRY0RRQUpBSUFRb0FreEZEUUFnQUNBRUtBSklJZ05CQUVFQUlBRWdBaEFyUlEwQ0lBQW9BbWdoQ0NBQUtBSnNJUW9nQkNBRFFRRnFJZ1kyQWlBZ0JDQUlJQXBzTmdJa0lBSkJCRUdnMXdBZ0JFRWdhaEFQSUFBb0F0QUJJQUFvQWt3b0FoZ1FkRVVOQWlBQUtBS2NBU0FEUVl3c2JHb2lCU2dDM0NzaUNBUkFJQWdRRUNBRlFnQTNBdHdyQ3lBRUlBWTJBaEFnQWtFRVFlYjhBQ0FFUVJCcUVBOGdBeUFKUmdSQUlBRWdBQ2dDeUFFcEF3aENBbndnQWhBMkRRRkJBQ0VGSUFKQkFVR25LVUVBRUE4TUF3c2dCQ0FITmdJRUlBUWdCallDQUNBQ1FRSkIzZVVBSUFRUUQwRUFJUVVnQUNBRVFjZ0Fha0VBSUFSQnhBQnFJQVJCUUdzZ0JFRThhaUFFUVRocUlBUkJOR29nQkVITUFHb2dBU0FDRUNjTkFRd0NDd3NnQUNBQ0VISWhCUXNnQkVIUUFHb2tBQ0FGQzhnR0FnZC9BWDRqQUVIUUFHc2lBeVFBSUFOQkFUWUNUQUpBQWtBZ0FDZ0NhQ0lFUVFGSERRQWdBQ2dDYkVFQlJ3MEFJQUFvQWxRTkFDQUFLQUpZRFFBZ0FDZ0NUQ0lGS0FJQURRQWdCU2dDQkEwQUlBVW9BZ2dnQUNnQ1hFY05BQ0FGS0FJTUlBQW9BbUJIRFFCQkFDRUVJQUFnQTBISUFHcEJBQ0FEUWNRQWFpQURRVUJySUFOQlBHb2dBMEU0YWlBRFFUUnFJQU5CekFCcUlBRWdBaEFuUlEwQkFrQWdBQ0FES0FKSVFRQkJBQ0FCSUFJUUt3UkFJQUFvQWt3aUFTZ0NFQTBCUVFFaEJBd0RDeUFDUVFGQmtjSUFRUUFRRHd3Q0N5QUJLQUlZSVFGQkFDRUNBMEFnQVNBQ1FUUnNJZ1JxS0FJc0VCQWdBQ2dDVENJRktBSVlJZ0VnQkdvaUJpQUFLQUxRQVNJSEtBSVVLQUlBS0FJVUlBSkJ6QUJzYWlJSUtBSWtOZ0lzSUFZZ0J5Z0NHQ2dDR0NBRWFpZ0NKRFlDSkNBSVFRQTJBaVJCQVNFRUlBSkJBV29pQWlBRktBSVFTUTBBQ3d3QkN3TkFBa0FDZndKQUlBUkJBVWNOQUNBQUtBSnNRUUZIRFFBZ0FDZ0NuQUVvQXR3clJRMEFJQU5CQURZQ1NDQUFRUUEyQXN3QklBQWdBQ2dDQ0VHQUFYSTJBZ2hCQUF3QkMwRUFJUVFnQUNBRFFjZ0Fha0VBSUFOQnhBQnFJQU5CUUdzZ0EwRThhaUFEUVRocUlBTkJOR29nQTBITUFHb2dBU0FDRUNkRkRRTWdBeWdDVEVVTkFTQURLQUpJQ3lJSFFRRnFJUVFnQUNBSFFRQkJBQ0FCSUFJUUt5RUpJQUFvQW1nZ0FDZ0NiR3doQlNBSlJRUkFJQU1nQlRZQ0JDQURJQVEyQWdBZ0FrRUJRWmM1SUFNUUQwRUFJUVFNQXdzZ0F5QUZOZ0lrSUFNZ0JEWUNJQ0FDUVFSQm9OY0FJQU5CSUdvUUR5QUFLQUxRQVNBQUtBSk1LQUlZRUhSRkJFQkJBQ0VFREFNTEFrQUNRQ0FBS0FKb1FRRkhEUUFnQUNnQ2JFRUJSdzBBSUFBb0Frd2lCU2dDQUNBQUtBSklJZ1lvQWdCSERRRWdCU2dDQkNBR0tBSUVSdzBCSUFVb0FnZ2dCaWdDQ0VjTkFTQUZLQUlNSUFZb0FneEhEUUVMSUFBb0Fwd0JJQWRCakN4c2FpSUZLQUxjS3lJR1JRMEFJQVlRRUNBRlFnQTNBdHdyQ3lBRElBUTJBaEFnQWtFRVFlYjhBQ0FEUVJCcUVBOGdBU2tEQ0NJS1VBUitRZ0FGSUFvZ0FTa0RPSDBMVUFSQUlBQW9BZ2hCd0FCR0RRRUxJQWhCQVdvaUNDQUFLQUpvSWdRZ0FDZ0NiR3hIRFFFTEN5QUFJQUlRY2lFRUN5QURRZEFBYWlRQUlBUUx0UVlCREg4Z0FDZ0NTQ0VKQWtBZ0FDZ0NhQ0FBS0FKc2JDSU1CRUFnQ1NnQ0VDSUJRYmdJYkNFTklBRWdBV3hCQW5RaENpQUFLQUlNSVFRZ0FDZ0NuQUVoQXdOQUlBTW9BdEFySVFzZ0F5QUVRWXdzRUJJaUFVRUFOZ0xvS3lBQlFYODJBdFFySUFGQkFEWUNzQ2dnQVVFQU5nS0VMQ0FCUVFBMkF2QXJJQUZDQURjQytDc2dBU0FMTmdMUUt5QUJJQUV0QUlnc1Fmd0JjVG9BaUN3Z0JDZ0M2Q3NFUUNBQklBb1FGQ0lETmdMb0t5QURSUVJBUVFBUEN5QURJQVFvQXVncklBb1FFaG9MSUFFZ0JDZ0MrQ3RCRkd3aUJSQVVJZ00yQXZBclFRQWhDQ0FEUlEwQ0lBTWdCQ2dDOENzZ0JSQVNHaUFFS0FMMEt5SUdCRUFnQkNnQzhDc2hBeUFCS0FMd0t5RUZRUUFoQndOQUlBTW9BZ3dFUUNBRklBTW9BaEFRRkNJR05nSU1JQVpGQkVCQkFBOExJQVlnQXlnQ0RDQURLQUlRRUJJYUlBUW9BdlFySVFZTElBRWdBU2dDK0N0QkFXbzJBdmdySUFWQkZHb2hCU0FEUVJScUlRTWdCMEVCYWlJSElBWkpEUUFMQ3lBQklBUW9Bb1FzUVJSc0lnVVFGQ0lETmdMOEt5QURSUTBDSUFNZ0JDZ0MvQ3NnQlJBU0dpQUJJQVFvQW9Rc0lnZzJBb1FzSUFnRVFDQUVLQUw4S3lFRElBRW9BdndySVFWQkFDRUhBMEFnQXlnQ0NDSUdCRUFnQlNBQktBTHdLeUFHSUFRb0F2QXJhMm8yQWdnTElBTW9BZ3dpQmdSQUlBVWdBU2dDOENzZ0JpQUVLQUx3SzJ0cU5nSU1DeUFGUVJScUlRVWdBMEVVYWlFRElBZEJBV29pQnlBSVJ3MEFDd3NnQ3lBRUtBTFFLeUFORUJJYUlBRkJqQ3hxSVFNZ0RrRUJhaUlPSUF4SERRQUxDMEVCSVFnZ0FBSi9RUUJCQVVISUFCQVRJZ0ZGRFFBYUlBRWdBUzBBS0VIK0FYRkJBWEk2QUNnZ0FVRUJRUVFRRXlJRU5nSVVJQUVnQkEwQUdpQUJFQkJCQUFzaUFUWUMwQUVnQVVVRVFFRUFEd3NnQUNnQzFBRWhCVUVBSVFRZ0FTQUFRZEFBYWpZQ0hDQUJJQWsyQWhoQkFVSFFCaEFUSVFNZ0FTZ0NGQ0FETmdJQUFrQWdBMFVOQUNBSktBSVFRY3dBRUJNaEF5QUJLQUlVS0FJQUlnY2dBellDRkNBRFJRMEFJQWNnQ1NnQ0VEWUNFQ0FBS0FLa0FTRUVJQUVnQlRZQ0xDQUJJQVEyQWdCQkFTRUVDeUFFRFFBZ0FDZ0MwQUVRVlVFQUlRZ2dBRUVBTmdMUUFTQUNRUUZCd2h0QkFCQVBDeUFJQzlVU0F3eC9BWDBCZmlNQVFUQnJJZ2drQUNBQVFRRTJBZ2dDZndKQUFrQWdBU0FJUVNocUlnVkJBaUFDRUJwQkFrY05BQ0FGSUFoQkxHcEJBaEFSSUFnb0FpeEJ6LzREUncwQUlBQkJBallDQ0NBQUtBTElBU0FCS1FNNFFnSjlJaEEzQXdBZ0NDQVFOd01RSUFKQkJFSHUzZ0FnQ0VFUWFoQVBJQUFvQXNnQklnTXBBd0FoRUNBREtBSVlJZ2RCQVdvaUJTQURLQUlnSWdSTkJFQWdBeWdDSENFRURBSUxJQU1DZnlBRXMwTUFBTWhDa2lJUFF3QUFnRTlkSUE5REFBQUFBR0J4QkVBZ0Q2a01BUXRCQUFzaUJUWUNJQ0FES0FJY0lBVkJHR3dRRnlJRUJFQWdBeUFFTmdJY0lBTW9BaGdpQjBFQmFpRUZEQUlMSUFNb0Fod1FFQ0FEUVFBMkFpQWdBMElBTndNWUlBSkJBVUdwSFVFQUVBOExJQUpCQVVHMTlRQkJBQkFQUVFBTUFRc2dCQ0FIUVJoc2FpSUVRUUkyQWhBZ0JDQVF4RGNEQ0NBRVFjLytBenNCQUNBRElBVTJBaGdnQVNBQUtBSVFRUUlnQWhBYVFRSkhCRUFnQWtFQlFaWVNRUUFRRDBFQURBRUxJQUFvQWhBZ0NFRW9ha0VDRUJFQ1FBSkFJQWdvQWlnaUJFR1Evd05IQkVBRFFFSGd2UUVoQnlBRVFmLzlBMDBFUUNBSUlBUTJBZ0FnQWtFQlFjb1FJQWdRRDBFQURBVUxBMEFnQnlJRktBSUFJZ01FUUNBRlFReHFJUWNnQXlBRVJ3MEJDd3NDUUFKQUlBTU5BRUVDSVFZZ0FrRUNRZlVjUVFBUUQwR1dFaUVIQWtBQ1FDQUJJQUFvQWhCQkFpQUNFQnBCQWtjTkFBTkFJQUFvQWhBZ0NFRXNha0VDRUJGQjRMMEJJUU1nQ0NnQ0xDSUVRWUQrQTA4RVFBTkFJQU1pQlNnQ0FDSU1CRUFnQTBFTWFpRURJQVFnREVjTkFRc0xJQVVvQWdRZ0FDZ0NDSEZGQkVCQi9DZ2hCd3dEQ3lBTUJFQWdERUdRL3dOR0JFQWdDRUdRL3dNMkFpZ01Cd3NnQVNrRE9DRVFJQUFvQXNnQklnTW9BaGdpQlVFQmFpSUVJQU1vQWlBaUIwMEVRQ0FES0FJY0lRY01CUXNnQXdKL0lBZXpRd0FBeUVLU0lnOURBQUNBVDEwZ0QwTUFBQUFBWUhFRVFDQVBxUXdCQzBFQUN5SUZOZ0lnSUFNb0Fod2dCVUVZYkJBWElnY0VRQ0FESUFjMkFod2dBeWdDR0NJRlFRRnFJUVFNQlFzZ0F5Z0NIQkFRSUFOQkFEWUNJQ0FEUWdBM0F4aEJxUjBoQnd3REN5QUdRUUpxSVFZTElBRWdBQ2dDRUVFQ0lBSVFHa0VDUmcwQUN3c2dBa0VCSUFkQkFCQVBJQUpCQVVIOXlBQkJBQkFQUVFBTUJ3c2dCeUFGUVJoc2FpSUZJQVkyQWhBZ0JTQVFweUFHYTZ3M0F3Z2dCVUVBT3dFQUlBTWdCRFlDR0NBSUlBdzJBaWhCNEwwQklRUURRQ0FFSWdVb0FnQWlBMFVOQVNBRVFReHFJUVFnQXlBTVJ3MEFDd3NnQlNnQ0JDQUFLQUlJY1VVRVFDQUNRUUZCL0NoQkFCQVBRUUFNQmdzZ0FTQUFLQUlRUVFJZ0FoQWFRUUpIQkVBZ0FrRUJRWllTUVFBUUQwRUFEQVlMSUFBb0FoQWdDRUVrYWtFQ0VCRWdDQ2dDSkNJRVFRRk5CRUFnQWtFQlFhRXVRUUFRRDBFQURBWUxJQWdnQkVFQ2F5SUhOZ0lrSUFBb0FoQWhCQ0FBS0FJVUlBZEpCRUFnQkNBSEVCY2lCRVVFUUNBQUtBSVFFQkFnQUVJQU53TVFJQUpCQVVIVUpVRUFFQTlCQUF3SEN5QUFJQVEyQWhBZ0FDQUlLQUlrSWdjMkFoUUxJQUVnQkNBSElBSVFHaUlFSUFnb0FpUkhCRUFnQWtFQlFaWVNRUUFRRDBFQURBWUxJQUFnQUNnQ0VDQUVJQUlnQlNnQ0NCRUJBRVVFUUNBQ1FRRkJxQkpCQUJBUFFRQU1CZ3NnQVNrRE9DRVFJQWdvQWlRaERBSkFJQUFvQXNnQklnVW9BaGdpQmtFQmFpSUhJQVVvQWlBaUJFMEVRQ0FGS0FJY0lRUU1BUXNnQlFKL0lBU3pRd0FBeUVLU0lnOURBQUNBVDEwZ0QwTUFBQUFBWUhFRVFDQVBxUXdCQzBFQUN5SUVOZ0lnSUFVb0Fod2dCRUVZYkJBWElnUkZEUVVnQlNBRU5nSWNJQVVvQWhnaUJrRUJhaUVIQ3lBRUlBWkJHR3hxSWdRZ0RFRUVhallDRUNBRUlCQ25JQXhyUVFScnJEY0RDQ0FFSUFNN0FRQWdCU0FITmdJWUlBRWdBQ2dDRUVFQ0lBSVFHa0VDUndSQUlBSkJBVUdXRWtFQUVBOUJBQXdHQzBFQklBb2dBMEhjL2dOR0d5RUtRUUVnQ3lBRFFkTCtBMFliSVF0QkFTQU5JQU5CMGY0RFJoc2hEU0FBS0FJUUlBaEJLR3BCQWhBUklBZ29BaWdpQkVHUS93TkhEUUVMQ3lBTkRRRUxJQUpCQVVHWUpFRUFFQTlCQUF3Q0N5QUxSUVJBSUFKQkFVSEdKRUVBRUE5QkFBd0NDeUFLUlFSQUlBSkJBVUgwSkVFQUVBOUJBQXdDQzBFQUlRTkJBQ0VOSXdCQkVHc2lCQ1FBUVFFaEJ3SkFJQUF0QUx3QlFRRnhSUTBBQWtBZ0FDZ0NjQ0lMUlEwQUFrQURRQ0FBS0FKMElBMUJBM1JxSWdVb0FnQWlDZ1JBSUFNZ0JTZ0NCQ0lHYXlJRlFRQWdBeUFGVHhzaEJTQURJQVpKQkVBZ0JpQURheUVMSUFNZ0Ntb2hDZ05BSUF0QkJFa0VRRUdPS3lFRERBVUxJQW9nQkVFTWFrRUVFQkVnQkNnQ0RDSURRWDl6SUFsSkJFQkI5Q29oQXd3RkN5QURJQXRCQkdzaUJtc2dCU0FESUFaTElnd2JJUVVnQXlBSmFpRUpJQVlnQTJzaEN5QUtRUUFnQXlBTUcycEJCR29oQ2lBRElBWkpEUUFMSUFBb0FuQWhDd3NnQlNFREN5QU5RUUZxSWcwZ0Mwa05BQXNnQTBVTkFVRUFJUWNnQWtFQlFla1dRUUFRRHd3Q0MwRUFJUWNnQWtFQklBTkJBQkFQREFFTElBQWdDUkFVSWdNMkFvZ0JJQU5GQkVCQkFDRUhJQUpCQVVHK0lFRUFFQThNQVFzZ0FDQUpOZ0o4SUFBb0FuUWhCZ0pBSUFBb0FuQWlDZ1JBUVFBaENVRUFJUU5CQUNFRkEwQWdCaUFGUVFOMElnMXFJZ3dvQWdBaUN3UkFJQUFvQW9nQklBTnFJUW9DZnlBTUtBSUVJZ1lnQ1UwRVFDQUtJQXNnQmhBU0dpQURJQVpxSVFNZ0NTQUdhd3dCQ3lBS0lBc2dDUkFTR2lBRElBbHFJUU1nQmlBSmF5SUdCRUFnQ1NBTGFpRUpBMEFnQmtFRVNRMEdJQWtnQkVFSWFrRUVFQkVnQ1VFRWFpRUpJQUFvQW9nQklBTnFJUW9nQmtFRWF5SUdJQVFvQWdnaUMwa0VRQ0FLSUFrZ0JoQVNHaUFESUFacUlRTWdCQ2dDQ0NBR2F3d0RDeUFLSUFrZ0N4QVNHaUFFS0FJSUlnb2dBMm9oQXlBSklBcHFJUWtnQmlBS2F5SUdEUUFMQzBFQUN5RUpJQUFvQW5RZ0RXb29BZ0FRRUNBQUtBSjBJZ1lnRFdwQ0FEY0NBQ0FBS0FKd0lRb0xJQVZCQVdvaUJTQUtTUTBBQ3lBQUtBSjhJUWtnQUNnQ2lBRWhBd3NnQUNBSk5nS1FBU0FBSUFNMkFuZ2dBRUVBTmdKd0lBWVFFQ0FBUVFBMkFuUU1BUXRCQUNFSElBSkJBVUdPSzBFQUVBOExJQVJCRUdva0FDQUhSUVJBSUFKQkFVR1BQVUVBRUE5QkFBd0NDeUFDUVFSQjk5WUFRUUFRRHlBQUtBTElBU0FCS1FNNFF2Ny8vLzhQZkVMLy8vLy9ENE0zQXdnZ0FFRUlOZ0lJUVFFTUFRc2dCU2dDSEJBUUlBVkJBRFlDSUNBRlFnQTNBeGdnQWtFQlFha2RRUUFRRDBFQUN5RU9JQWhCTUdva0FDQU9DeHdBSUFBb0FnaEZJQUFvQXNBQlFRQkhJQUFvQXNRQlFRQkhjWEVMQkFCQkFBc1BBQ0FBQkVBZ0FDQUJOZ0s0QVFzTGp3RUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSURRVFJ1SVFRZ0EwRTBUd1IvUVFBaEF3TkFJQUVvQWdBaUFnUkFJQUpCQVdzUUVDQUJRUUEyQWdBTElBRW9BZ1FpQWdSQUlBSVFFQ0FCUVFBMkFnUUxJQUVvQWdnaUFnUkFJQUlRRUNBQlFRQTJBZ2dMSUFGQk5Hb2hBU0FEUVFGcUlnTWdCRWNOQUFzZ0FDZ0NHQVVnQVFzUUVDQUFRUUEyQWhnTEM0WUJBUVIvSUFBb0FoZ2lBUVJBSUFBb0Fod2lBa0hBQUU4RWZ5QUNRUVoySVFSQkFDRUNBMEFnQVNnQ0FDSURCRUFnQXhBUUlBRkJBRFlDQUFzZ0FTZ0NCQ0lEQkVBZ0F4QVFJQUZCQURZQ0JBc2dBU2dDUEJBUUlBRkJBRFlDUENBQlFVQnJJUUVnQWtFQmFpSUNJQVJIRFFBTElBQW9BaGdGSUFFTEVCQWdBRUVBTmdJWUN3cy9BUUYvSUFBRVFDQUFLQUowSWdFRVFDQUJFQkFnQUVFQU5nSjBDeUFBS0FKNElnRUVRQ0FCRUJBZ0FFRUFOZ0o0Q3lBQUtBS1VBUkFRSUFBUUVBc0x3YVlGQkZ4L0Fuc0dmZ0Y5SXdCQjRBQnJJaU1rQUNBQUtBSUlJUm9DUUFKQUFrQUNRQ0FBS0FJQVJRUkFJQm9nR2lnQ0VDQWFLQUlJYXlBYUtBSVVJQm9vQWd4cmJFRUNkQ0lHRUJnaUF6WUNQQ0FEUlFSQUlBQW9BaVFhSUFBb0FpQkJBVUhSUEVFQUVBOGdBQ2dDSkJvZ0FFRWNhaUVRREFNTElBTkJBQ0FHRUJVYURBRUxJQm9vQWp3aUEwVU5BQ0FERUJBZ0drRUFOZ0k4Q3lBQUtBSVFJaklvQWh3Z01pZ0NHRUdZQVd4cUlnTkJtQUZyS0FJQUlUVWdBMEdRQVdzb0FnQWhOaUFBS0FJVUlTOGdBQ2dDRENFd0lBQW9BZ1FoTnlBQUtBSWNLQUlBUlEwQ0lBQkJIR29oRUFKQUFuOUJBQ0FCS0FJRUlnTkJBRXdOQUJvZ0FTZ0NBQ0VHQWtBRFFDQUdJQWRCREd4cUlnUW9BZ0JGRFFFZ0IwRUJhaUlISUFOSERRQUxRUUFNQVFzZ0JDZ0NCQXNpQkEwQVFRRkJuQUVRRXlJRVJRUkFJQUFvQWlCQkFVR1FNRUVBRUE4TUFnc2dCRUVBTmdLTUFTQUJLQUlFSWdOQi8vLy8vd2RIQkg4Q2Z5QUJLQUlBSVFZZ0EwRUFTZ1JBQTBBZ0JpQUpRUXhzYWlJSEtBSUFSUVJBSUFjb0FnZ2lBd1IvSUFjb0FnUWdBeEVDQUNBQktBSUFCU0FHQ3lBSlFReHNhaUlCUVE4MkFnZ2dBU0FFTmdJRVFRRU1Bd3NnQ1VFQmFpSUpJQU5IRFFBTEMwRUFJQVlnQTBFTWJFRU1haEFYSWdORkRRQWFJQUVnQXpZQ0FDQURJQUVvQWdRaUJrRU1iR29pQTBFUE5nSUlJQU1nQkRZQ0JDQURRUUEyQWdBZ0FTQUdRUUZxTmdJRVFRRUxCVUVBQ3cwQUlBQW9BaUJCQVVHTVAwRUFFQThnQkNnQ2RDSUJCRUFnQVJBUUlBUkJBRFlDZEFzZ0JDZ0NlQ0lCQkVBZ0FSQVFJQVJCQURZQ2VBc2dCQ2dDbEFFUUVDQUVFQkFNQVFzZ0JDQUFLQUlZTmdLUUFTQUFLQUlvSVNzZ0FDZ0NKQ0VoSUFBb0FpQWhIU0F2S0FLb0JpRVJJREFvQWhBaEFRSkFBa0FnTHlnQ0VDSVdRY0FBY1FSQUlCWWhDaU1BUWJBQ2F5SVBKQUFDUUNBUkJFQWdJUVJBUVFBaEJ5QWRRUUZCZ1JoQkFCQVBEQUlMUVFBaEJ5QWRRUUZCZ1JoQkFCQVBEQUVMSUFRb0FuUWhCd0pBQWtBZ0dpZ0NGQ0FhS0FJTWF5SURJQm9vQWhBZ0dpZ0NDR3NpQm13aUFTQUVLQUtFQVVzRVFDQUhFQkFnQkNBQlFRSjBJaEVRR0NJSE5nSjBJQWRGQkVCQkFDRUhEQVFMSUFRZ0FUWUNoQUVNQVFzZ0IwVU5BU0FCUVFKMElSRUxJQWRCQUNBUkVCVWFDeUFFS0FKNElRY0NRQ0FFS0FLSUFVSFBGRXNOQUNBSEVCQWdCRUhBMGdBUUdDSUhOZ0o0SUFjTkFFRUFJUWNNQVFzZ0JFSFFGRFlDaUFFZ0IwRUFRY0RTQUJBVkdpQUVJQU0yQW9BQklBUWdCallDZkNBYUtBSVlJZ0pGQkVCQkFTRUhEQUVMSUJvb0Fod2hEVUVCSVFjQ1FBSkFBa0FDUUFKQUlCb29BalFpQXdSQUlCb29BZ1FoQ1VFQUlRZEJBQ0VCQWtBZ0EwRUVUd1JBSUFOQmZIRWhBUU5BSUFrZ0NFRURkR29pQmtFY2FpQUdRUlJxSUFaQkRHb2dCdjBKQWdUOVZnSUFBZjFXQWdBQy9WWUNBQU1nWHYydUFTRmVJQWhCQkdvaUNDQUJSdzBBQ3lCZUlGNGdYdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzJ1QVNKZUlGNGdYdjBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzJ1QWYwYkFDRUhJQUVnQTBZTkFRc0RRQ0FKSUFGQkEzUnFLQUlFSUFkcUlRY2dBVUVCYWlJQklBTkhEUUFMQ3lBRFFRRkdCRUFnQkNnQ2tBRkZEUVVMSUFjZ0JDZ0NtQUZORFFFZ0JDZ0NsQUVnQnhBWEloRU5Ba0VBSVFjTUJnc2dCQ2dDa0FGRkRRVUxJQVFvQXBRQkloRU5BVUVBSVFjTUJBc2dCQ0FITmdLWUFTQUVJQkUyQXBRQkN5QWFLQUkwUlFSQVFRQWhCd3dDQ3lBYUtBSUVJUWhCQUNFSFFRQWhBUU5BSUFjZ0VXb2dDQ0FCUVFOMElnTnFJZ1lvQWdBZ0JpZ0NCQkFTR2lBYUtBSUVJZ2dnQTJvb0FnUWdCMm9oQnlBQlFRRnFJZ0VnR2lnQ05Fa05BQXNNQVFzZ0dpZ0NCQ2dDQUNFUkMwRUFJUUZCQUNFSUFuOUJBQ0FhS0FJb0lnTkZEUUFhSUJvb0FnQWlCaWdDQ0NFSVFRQWdBMEVCUmcwQUdpQUdLQUlnQ3lFRElBSWdEV3NoUlFKQUlBTWdDR29pQ0VVRVFFRUFJUWtNQVF0QkFTRUJJQm9vQWdBaUF5Z0NBQ0VGUVFBaENTQUlRUUZHQkVCQkFDRUJEQUVMSUFNb0FoZ2hDUXNnUlVFQmFpRVdJQVFvQW5RaERpQUVLQUo0SVJRZ0dpZ0NEQ0VTSUJvb0FoUWhHQ0FhS0FJSUlTUWdHaWdDRUNFckFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkZEUUFnQ1EwQUlDRkZEUUVnSFVFQ1FhSFFBRUVBRUE5QkFTRUlEQUlMSUFoQkJFa05BU0FoQkVBZ0R5QUlOZ0p3SUIxQkFVSDh4Z0FnRDBId0FHb1FEd3dJQ3lBUElBZzJBbUFnSFVFQlFmekdBQ0FQUWVBQWFoQVBRUUFoQnd3SUN5QWRRUUpCb2RBQVFRQVFEeUFhS0FJWUlnRkJIa3NOQVVFQklRd2dBU0FXVHcwRERBVUxJQm9vQWhnaUFVRWVUUTBCSUNGRkRRQWdEeUFCTmdJZ0lCMUJBVUdiMndBZ0QwRWdhaEFQREFVTElBOGdBVFlDQUNBZFFRRkJtOXNBSUE4UUQwRUFJUWNNQlFzZ0FTQVdTUTBCSUFoQkFra0VRQ0FJSVF3TUFRc2dBU0FXUndSQUlBZ2hEQXdCQzBFQklReEJrTWNCTFFBQURRQWdJVVVFUUVHUXh3RkJBVG9BQUNBUElBZzJBa0FnSFVFQ1FhYk1BQ0FQUVVCckVBOE1BUXRCa01jQkxRQUFSUVJBUVpESEFVRUJPZ0FBSUE4Z0NEWUNVQ0FkUVFKQnBzd0FJQTlCMEFCcUVBOExDd0pBQWtBZ0JVRUNTUTBBSUFVZ0Iwc05BQ0FGSUFscUlBZE5EUUVMSUNFRVFFRUFJUWNnSFVFQlFjTEdBRUVBRUE4TUJRdEJBQ0VISUIxQkFVSEN4Z0JCQUJBUERBUUxBa0FDUUNBRklCRnFJaE5CQVdzdEFBQkJCSFFnRTBFQ2F5MEFBRUVQY1hJaUJrRUNTUTBBSUFVZ0JrZ05BQ0FHUWZBZlNRMEJDeUFoQkVCQkFDRUhJQjFCQVVIVzhnQkJBQkFQREFVTFFRQWhCeUFkUVFGQjF2SUFRUUFRRHd3RUN5QWFLQUljSVNZZ0QwRUFOZ0tRQWlBUFFRQTJBcGdDSUE5Q0FEY0RpQUlnRDBJQU53T29BaUFQUWdBM0Fwd0NJQThnQmtFQmF5SUhOZ0tVQWlBUElBVWdFV29nQm1zaUFUWUNnQUpDL3dFaFlDQUdRUUpQQkVBZ0FURUFBQ0ZnQzBFSUlRTWdEMEVJTmdLUUFpQVBJQVpCQW1zaUNEWUNsQUlnRHlCZ1FnK0VJR0FnQjBFQlJoc2lZRGNEaUFJZ0R5QUJJQVpCQVVwcUlnYzJBb0FDSUE4Z1lFTC9BVkVpRFRZQ21BSUNmd0pBSUFGQkEzRWlBa0VEUmcwQVF2OEJJV0VnRFFSQVFRQWdCeTBBQUVHUEFVc05BaG9MSUFaQkEwNEVRQ0FITVFBQUlXRUxJQThnQmtFRGF5SU5OZ0tVQWlBUFFROUJFQ0JnUXY4QlVTSUxHeUlETmdLUUFpQVBJQWNnQmtFQ1Ntb2lBVFlDZ0FJZ0R5QmhRZytFSUdFZ0NFRUJSaHNpWVVML0FWRTJBcGdDSUE4Z1lFSUhRZ2dnQ3h1R0lHR0VJbUEzQTRnQ0lBSkJBa1lOQUNCaFF2OEJVUVJBUVFBZ0FTMEFBRUdQQVVzTkFob0xRdjhCSVdJZ0JrRUVUZ1JBSUFFeEFBQWhZZ3NnRHlBR1FRUnJJZ2MyQXBRQ0lBOGdBU0FHUVFOS2FpSUJOZ0tBQWlBUElHSkNENFFnWWlBTlFRRkdHeUppUXY4QlVUWUNtQUlnRHlBRFFRZEJDQ0JoUXY4QlVTSUlHMm9pQXpZQ2tBSWdEeUJnUWdkQ0NDQUlHNFlnWW9RaVlEY0RpQUlnQWtFQlJnMEFRdjhCSVdFZ1lrTC9BVkVFUUVFQUlBRXRBQUJCandGTERRSWFDeUFHUVFWT0JFQWdBVEVBQUNGaEN5QVBJQVpCQldzMkFwUUNJQThnQVNBR1FRUkthallDZ0FJZ0R5QmhRZytFSUdFZ0IwRUJSaHNpWVVML0FWRTJBcGdDSUE4Z0EwRUhRUWdnWWtML0FWRWlBUnRxSWdNMkFwQUNJQThnWUVJSFFnZ2dBUnVHSUdHRUltQTNBNGdDQ3lBUElHQkJ3QUFnQTJ1dGhqY0RpQUpCQVF0RkJFQWdJUVJBUVFBaEJ5QWRRUUZCZzlVQVFRQVFEd3dGQzBFQUlRY2dIVUVCUVlQVkFFRUFFQThNQkFzZ0t5QWtheUVWSUE4Z0JrRUNheUlMTmdMMEFTQVBJQVVnRVdvaUFrRURheUlETmdMZ0FTQVBJQUpCQW1zdEFBQWlHVUdQQVVzaURUWUMrQUVnRHlBWlFRUjJyU0pnTndQb0FTQVBRUU5CQkNCZ1FnZURRZ2RSR3lJQk5nTHdBU0FEUVFOeFFRRnFJZ2NnQ3lBSElBdElHeUVJQWtBQ1FDQUdRUUpNQkVBZ0R5QUxJQWhySWdJMkF2UUJEQUVMSUE4Z0FrRUVheUlITmdMZ0FTQVBJQU10QUFBaUYwR1BBVXNpRFRZQytBRWdEeUFYclNKaElBR3RoaUJnaENKZ053UG9BU0FQUVFoQkIwRUlJR0ZDL3dDRFF2OEFVUnNnR1VHUEFVMGJJQUZxSWdFMkF2QUJBa0FnQ0VFQlJnUkFJQWNoQXd3QkN5QVBJQUpCQldzaUF6WUM0QUVnRHlBSExRQUFJaGxCandGTElnMDJBdmdCSUE4Z0dhMGlZU0FCcllZZ1lJUWlZRGNENkFFZ0QwRUlRUWRCQ0NCaFF2OEFnMEwvQUZFYklCZEJqd0ZOR3lBQmFpSUJOZ0x3QVNBSVFRSkdEUUFnRHlBQ1FRWnJJZ2MyQXVBQklBOGdBeTBBQUNJWFFZOEJTeUlOTmdMNEFTQVBJQmV0SW1FZ0FhMkdJR0NFSW1BM0ErZ0JJQTlCQ0VFSFFRZ2dZVUwvQUlOQy93QlJHeUFaUVk4QlRSc2dBV29pQVRZQzhBRWdDRUVEUmdSQUlBY2hBd3dCQ3lBUElBSkJCMnNpQXpZQzRBRWdEeUFITVFBQUltRkNqd0ZXSWcwMkF2Z0JJQThnWVNBQnJZWWdZSVFpWURjRDZBRWdEMEVJUVFkQkNDQmhRdjhBZzBML0FGRWJJQmRCandGTkd5QUJhaUlCTmdMd0FRc2dEeUFMSUFocklnSTJBdlFCSUFGQklFc05BUXNDUUNBQ1FRUk9CRUFnQTBFRGF5Z0NBQ0VISUE4Z0FrRUVhellDOUFFZ0R5QURRUVJyTmdMZ0FRd0JDeUFDUVFCTUJFQkJBQ0VIREFFTElBSkJBWEVoUndKQUlBSkJBVVlFUUVFWUlRaEJBQ0VIREFFTElBSkIvdi8vL3dkeElSZEJHQ0VJUVFBaEIwRUFJUXNEUUNBUElBTkJBV3NpSHpZQzRBRWdBeTBBQUNGR0lBOGdBMEVDYXlJRE5nTGdBU0FQSUFKQkFXczJBdlFCSUI4dEFBQWhIeUFQSUFKQkFtc2lBallDOUFFZ1JpQUlkQ0FIY2lBZklBaEJDR3QwY2lFSElBaEJFR3NoQ0NBTFFRSnFJZ3NnRjBjTkFBc0xJRWRGRFFBZ0R5QURRUUZyTmdMZ0FTQURMUUFBSVVnZ0R5QUNRUUZyTmdMMEFTQklJQWgwSUFkeUlRY0xJQThnQjBIL0FYRWlBMEdQQVVzMkF2Z0JJQTlCQjBFSUlBZEJnSUNBK0FkeFFZQ0FnUGdIUmh0QkNDQU5HeUlDUVFoQkIwRUlJQWRCZ0lEOEEzRkJnSUQ4QTBZYklBZEIvLy8vLzNoTkcyb2lDRUVJUVFkQkNDQUhRWUQrQVhGQmdQNEJSaHNnQjBFUWRrSC9BWEVpRFVHUEFVMGJhaUlMUVFoQkIwRUlJQWRCL3dCeFFmOEFSaHNnQjBFSWRrSC9BWEVpR1VHUEFVMGJJQUZxYWpZQzhBRWdEeUFOSUFKMElBZEJHSFp5SUJrZ0NIUnlJQU1nQzNSeXJTQUJyWVlnWUlRM0ErZ0JDeUFQUWNBQmFpQVJJQVVnQm10Qi93RVFXd0ovUVFBZ0RFRUNTUTBBR2lBUFFhQUJhaUFUSUFsQkFCQmJRUUFnREVFQ1JnMEFHa0lBSVdCQ0FDRmlJQTlCQVRZQ21BRWdEMEVBTmdLUUFTQVBRZ0EzQTRnQklBOGdDVUVCYXlJR05nS1VBU0FQSUFVZ0VXb2dDV29pQTBFQmF5SUJOZ0tBQVNBQlFRTnhJUVVDUUNBSlFRQk1CRUFnQVNFRERBRUxJQThnQTBFQ2F5SUROZ0tBQVNBQk1RQUFJV0FMSUE4Z1lEY0RpQUVnRHlCZ1FvOEJWaUlSTmdLWUFTQVBRUWRCQ0NCZ1F2OEFnMEwvQUZFYklnMDJBcEFCQWtBZ0JVVU5BQ0FQSUFsQkFtc2lBallDbEFFQ1FDQUpRUUpJQkVBZ0F5RUhEQUVMSUE4Z0EwRUJheUlITmdLQUFTQURNUUFBSVdJTElBOGdZa0tQQVZZaUVUWUNtQUVnRHlCaUlBMnRoaUJnaENKaE53T0lBU0FQUVFoQkIwRUlJR0pDL3dDRFF2OEFVUnNnWUVLUEFWZ2JJQTFxSWcwMkFwQUJJQVZCQVVZRVFDQUhJUU1nWVNGZ0lBWWhDU0FDSVFZTUFRc2dEeUFKUVFOcklnZzJBcFFCQWtBZ0NVRURTQVJBSUFjaEFRd0JDeUFQSUFkQkFXc2lBVFlDZ0FFZ0J6RUFBQ0ZqQ3lBUElHTkNqd0ZXSWhFMkFwZ0JJQThnWXlBTnJZWWdZWVFpWURjRGlBRWdEMEVJUVFkQkNDQmpRdjhBZzBML0FGRWJJR0pDandGWUd5QU5haUlOTmdLUUFTQUZRUUpHQkVBZ0FTRURJQUloQ1NBSUlRWU1BUXNnRHlBSlFRUnJJZ1kyQXBRQlFnQWhZZ0pBSUFsQkJFZ0VRQ0FCSVFNTUFRc2dEeUFCUVFGcklnTTJBb0FCSUFFeEFBQWhZZ3NnRHlCaVFvOEJWaUlSTmdLWUFTQVBJR0lnRGEyR0lHQ0VJbUEzQTRnQklBOUJDRUVIUVFnZ1lrTC9BSU5DL3dCUkd5QmpRbzhCV0JzZ0RXb2lEVFlDa0FFZ0NDRUpDeUFOUVNCTkJFQUNRQ0FKUVFWT0JFQWdBMEVEYXlnQ0FDRUhJQThnQ1VFRmF6WUNsQUVnRHlBRFFRUnJOZ0tBQVF3QkMwRUFJUWNnQ1VFQ1NBMEFRUmdoQ1FOQUlBOGdBMEVCYXlJQk5nS0FBU0FETFFBQUlVa2dEeUFHUVFGcklnSTJBcFFCSUVrZ0NYUWdCM0loQnlBR1FRRkxJVW9nQVNFRElBbEJDR3NoQ1NBQ0lRWWdTZzBBQ3dzZ0R5QUhRZjhCY1NJQlFZOEJTellDbUFFZ0QwRUhRUWdnQjBHQWdJRDRCM0ZCZ0lDQStBZEdHMEVJSUJFYklnTkJDRUVIUVFnZ0IwR0FnUHdEY1VHQWdQd0RSaHNnQjBILy8vLy9lRTBiYWlJR1FRaEJCMEVJSUFkQmdQNEJjVUdBL2dGR0d5QUhRUkIyUWY4QmNTSUpRWThCVFJ0cUlnSkJDRUVIUVFnZ0IwSC9BSEZCL3dCR0d5QUhRUWgyUWY4QmNTSUlRWThCVFJzZ0RXcHFOZ0tRQVNBUElBa2dBM1FnQjBFWWRuSWdDQ0FHZEhJZ0FTQUNkSEt0SUEydGhpQmdoRGNEaUFFTFFRRUxJVEVnR0NBU2F5RWZJQlpCQVdvaExDQVVRUUE2QU1BUUlCUkJ3QkJxSVFzZ0QwR0FBbW9RS0NFQ0lCVkJBRW9FUUNBbVFRRnJJUk1nRkNFRElBc2hDRUVBSVJFZ0RpRUdRUUFoRFFOQUlBMGhCU0FSUVFoMElBOUI0QUZxRUM5Qi93QnhRUUYwY2tHZy9RQnFMd0VBSVFFQ1FDQVJEUUFnQVVFQUlBSkJBbXNpQjBGL1Joc2hBU0FDUVFGS0JFQWdCeUVDREFFTElBOUJnQUpxRUNnaEFnc2dEeWtENkFFaFpDQVBLQUx3QVNGTElBTWdBeWdDQUNBQlFRUjJJaGhCQTNFZ0FVRUNka0V3Y1hJZ0luUnlJaFkyQWdBZ0FVRUZka0VIY1NBQlFSQnhJaDVCQkhaeUlSRWdTeUFCUVFkeElnZHJJUTBnWkNBSHJZZ2lZS2NoQ1VFQUlRY2dGU0FGUVFKeVNnUkFJQkZCQ0hRZ0NVSC9BSEZCQVhSeVFhRDlBR292QVFBaEJ3SkFJQkVOQUNBSFFRQWdBa0VDYXlJSlFYOUdHeUVISUFKQkFVb0VRQ0FKSVFJTUFRc2dEMEdBQW1vUUtDRUNDeUFIUVFSMlFRRnhJQWRCQlhaQkIzRnlJUkVnRFNBSFFRZHhJZ2xySVEwZ1lDQUpyWWdpWUtjaENRc2dBeUFIUVFKMFFZQUdjU0FIUVRCeGNpQWlRUVJxZENBV2NqWUNBQUpBSUFkQkFuWkJBbkVnQVVFRGRrRUJjWElpRjBFRFJ3MEFRUVJCQXlBQ1FRSnJJaFpCZjBZYklSY2dBa0VCU2dSQUlCWWhBZ3dCQ3lBUFFZQUNhaEFvSVFJTEFuOGdGMFVFUUNBUFFvR0FnSUFRTndKNFFRQU1BUXNnRjBFQ1RRUkFJQTlCQVNBSlFRZHhRZFNkQVdvdEFBQWlGa0VGZGtGL0lCWkJBblpCQjNFaUdYUkJmM01nQ1NBV1FRTnhJZ2wyY1dwQkFXb2lGaUFYUVFGR0loY2JOZ0o4SUE4Z0ZrRUJJQmNiTmdKNElBa2dHV29NQVFzZ0NTQUpRUWR4UWRTZEFXb3RBQUFpRmtFRGNTSVpkaUVKSUJkQkEwWUVRQ0FXUVFWMlFRRnFJUmNnR1VFRFJnUkFJQThnQ1VFQmNVRUNjallDZkNBUElCZEJmeUFXUVFKMlFRZHhJaFowUVg5eklBbEJBWFp4YWpZQ2VDQVdRUVJxREFJTElBOGdGeUFKSUFsQkIzRkIxSjBCYWkwQUFDSUpRUU54SWhKMklpQkJmeUFXUVFKMlFRZHhJaFowUVg5emNXbzJBbmdnRDBGL0lBbEJBblpCQjNFaUYzUkJmM01nSUNBV2RuRWdDVUVGZG1wQkFXbzJBbndnRmlBWmFpQVNhaUFYYWd3QkN5QVBJQWtnQ1VFSGNVSFVuUUZxTFFBQUlnbEJBM0VpRW5ZaUlFRi9JQlpCQW5aQkIzRWlGM1JCZjNOeElCWkJCWFpxUVFOcU5nSjRJQTlCZnlBSlFRSjJRUWR4SWhaMFFYOXpJQ0FnRjNaeElBbEJCWFpxUVFOcU5nSjhJQklnR1dvZ0Yyb2dGbW9MSVFrQ1FDQXNJQThvQW5naUdVOEVRQ0FQS0FKOEloSWdMRTBOQVFzZ0lRUkFRUUFoQnlBZFFRRkJtZllBUVFBUUR3d0hDMEVBSVFjZ0hVRUJRWm4yQUVFQUVBOE1CZ3NnRHlBTklBbHJOZ0x3QVNBUElHQWdDYTJJTndQb0FTQUhRZkFCY1NBWVFROXhja0gvQVVIL0FTQUZRUVJxSWcwZ0ZXdEJBWFIySUEwZ0ZVd2JJZ2tnQ1VIVkFIRWdIMEVCU2hzaUNVRi9jM0VFUUNBaEJFQkJBQ0VISUIxQkFVR3YyZ0JCQUJBUERBY0xRUUFoQnlBZFFRRkJyOW9BUVFBUUR3d0dDd0pBQWtBZ0hnUkFJQTlCd0FGcUVCc2hGeUFQSUE4b0F0QUJJQmtnQVVFVGRFRWZkV29pRm1zMkF0QUJJQThnRHlrRHlBRWdGcTJJTndQSUFTQVhRWDhnRm5SQmYzTnhJQUZCQ0haQkFYRWdGblJ5UVFGeVFRSnFJQk4wSUJkQkgzUnlJUllNQVF0QkFDRVdJQWxCQVhGRkRRRUxJQVlnRmpZQ0FBc0NRQ0FCUVNCeEJFQWdEMEhBQVdvUUd5RVhJQThnRHlnQzBBRWdHU0FCUVJKMFFSOTFhaUlXYXpZQzBBRWdEeUFQS1FQSUFTQVdyWWczQThnQklBWWdGVUVDZEdvZ0YwRi9JQlowUVg5emNTQUJRUWwyUVFGeElCWjBja0VCY2lJV1FRSnFJQk4wSUJkQkgzUnlOZ0lBSUFoQklDQVdaMnNpRmlBSUxRQUFRZjhBY1NJWElCWWdGMHNiUVlBQmNqb0FBQXdCQ3lBSlFRSnhSUTBBSUFZZ0ZVRUNkR3BCQURZQ0FBc2dCa0VFYWlFWEFrQUNRQ0FCUWNBQWNRUkFJQTlCd0FGcUVCc2hHQ0FQSUE4b0F0QUJJQmtnQVVFUmRFRWZkV29pRm1zMkF0QUJJQThnRHlrRHlBRWdGcTJJTndQSUFTQVlRWDhnRm5SQmYzTnhJQUZCQ25aQkFYRWdGblJ5UVFGeVFRSnFJQk4wSUJoQkgzUnlJUllNQVF0QkFDRVdJQWxCQkhGRkRRRUxJQmNnRmpZQ0FBc2dDRUVBT2dBQkFrQWdBVUdBQVhFRVFDQVBRY0FCYWhBYklSZ2dEeUFQS0FMUUFTQVpJQUZCRUhSQkgzVnFJaFpyTmdMUUFTQVBJQThwQThnQklCYXRpRGNEeUFFZ0Z5QVZRUUowYWlBWVFYOGdGblJCZjNOeElBRkJDM1pCQVhFZ0ZuUnlRUUZ5SWdGQkFtb2dFM1FnR0VFZmRISTJBZ0FnQ0VHZ2Z5QUJaMnM2QUFFTUFRc2dDVUVJY1VVTkFDQVhJQlZCQW5ScVFRQTJBZ0FMSUFaQkNHb2hBUUpBQWtBZ0IwRVFjUVJBSUE5QndBRnFFQnNoR1NBUElBOG9BdEFCSUJJZ0IwRVRkRUVmZFdvaUZtczJBdEFCSUE4Z0R5a0R5QUVnRnEySU53UElBU0FaUVg4Z0ZuUkJmM054SUFkQkNIWkJBWEVnRm5SeVFRRnlRUUpxSUJOMElCbEJIM1J5SVJjTUFRdEJBQ0VYSUFsQkVIRkZEUUVMSUFFZ0Z6WUNBQXNDUUNBSFFTQnhCRUFnRDBIQUFXb1FHeUVaSUE4Z0R5Z0MwQUVnRWlBSFFSSjBRUjkxYWlJV2F6WUMwQUVnRHlBUEtRUElBU0FXcllnM0E4Z0JJQUVnRlVFQ2RHb2dHVUYvSUJaMFFYOXpjU0FIUVFsMlFRRnhJQlowY2tFQmNpSUJRUUpxSUJOMElCbEJIM1J5TmdJQUlBaEJJQ0FCWjJzaUFTQUlMUUFCUWY4QWNTSVdJQUVnRmtzYlFZQUJjam9BQVF3QkN5QUpRU0J4UlEwQUlBRWdGVUVDZEdwQkFEWUNBQXNnQmtFTWFpRUJBa0FDUUNBSFFjQUFjUVJBSUE5QndBRnFFQnNoR1NBUElBOG9BdEFCSUJJZ0IwRVJkRUVmZFdvaUZtczJBdEFCSUE4Z0R5a0R5QUVnRnEySU53UElBU0FaUVg4Z0ZuUkJmM054SUFkQkNuWkJBWEVnRm5SeVFRRnlRUUpxSUJOMElCbEJIM1J5SVJjTUFRdEJBQ0VYSUFsQndBQnhSUTBCQ3lBQklCYzJBZ0FMSUFoQkFtb2lDRUVBT2dBQUFrQWdCMEdBQVhFRVFDQVBRY0FCYWhBYklSWWdEeUFQS0FMUUFTQVNJQWRCRUhSQkgzVnFJZ2xyTmdMUUFTQVBJQThwQThnQklBbXRpRGNEeUFFZ0FTQVZRUUowYWlBV1FYOGdDWFJCZjNOeElBZEJDM1pCQVhFZ0NYUnlRUUZ5SWdGQkFtb2dFM1FnRmtFZmRISTJBZ0FnQ0VHZ2Z5QUJaMnM2QUFBTUFRc2dDVUdBQVVrTkFDQUJJQlZCQW5ScVFRQTJBZ0FMSUNKQkVITWhJaUFESUFWQkJIRnFJUU1nQmtFUWFpRUdJQTBnRlVnTkFBc0xJQXBCQ0hFaE9DQVVRYkFNYWlFb0lCUkJvQWhxSVNrZ0ZFR1FCR29oSlNBZlFRTk9CRUFnRlVFRGJDRTVJQlZCQVhRaE9pQW1RUUZySVNCQkF5QW1RUUpySWdGMElTMUJBU0FCZENFdUlCVkJCMnBCQVhaQi9QLy8vd2R4UVFScUlUMGdLeUFrUVg5emFpSUJRUU4ySWdOQkFuUWlQa0VFYWlFN0lBTkJBV29pUDBIOC8vLy9BM0VpSEVFQ2RDRThJQnhCQTNRaEVpQUJRUmhKSVVCQkFpRVpBMEFnR1NFVElBc3RBQUFoRmlBTFFRQTZBQUFnSWtGdmNVRUNjeUVpQWtBZ0ZVRUFUQVJBSUJOQkFtb2hHUXdCQ3lBbElCUWdFMEVFY1JzaEVTQVRRUUpxSVJrZ0RpQVRJQlZzUVFKMGFpRUlRUUFoQ2lBTElRWkJBQ0VOQTBBZ0RTRUZJQVl0QUFGQkJYWkJCSEVnQ2lBV1FRZDJjbklpQTBFSWRDQVBRZUFCYWhBdlFmOEFjVUVCZEhKQm9JMEJhaThCQUNFQkFrQWdBdzBBSUFGQkFDQUNRUUpySWdOQmYwWWJJUUVnQWtFQlNnUkFJQU1oQWd3QkN5QVBRWUFDYWhBb0lRSUxJQThwQStnQklXVWdEeWdDOEFFaFRDQVJJQkVvQWdBZ0FVRUVka0VEY1NBQlFRSjJRVEJ4Y2lBaWRISWlDVFlDQUNBQlFjQUFjU0lxUVFWMklBRkJnQUZ4SWlkQkJuWnlJUW9nVENBQlFRZHhJZ05ySVJjZ1pTQURyWWdpWUtjaERVRUFJUmdDUUNBVklBVkJBbkpNQkVCQkFDRUhEQUVMSUFvZ0JpMEFBa0VGZGtFRWNTQUdMUUFCUVFkMmNuSWlBMEVJZENBTlFmOEFjVUVCZEhKQm9JMEJhaThCQUNFSEFrQWdBdzBBSUFkQkFDQUNRUUpySWdOQmYwWWJJUWNnQWtFQlNnUkFJQU1oQWd3QkN5QVBRWUFDYWhBb0lRSUxJQWRCQlhZZ0IwRUdkbkpCQW5FaENpQVhJQWRCQjNFaUEyc2hGeUJnSUFPdGlDSmdweUVOQ3lBUklBZEJBblJCZ0FaeElBZEJNSEZ5SUNKQkJHcDBJQWx5TmdJQVFRRWhDVUVCSVFNQ1FDQUhRUUoyUVFKeElBRkJBM1pCQVhGeUloNUZEUUFnRFNBTlFRZHhRZFNkQVdvdEFBQWlBMEVEY1NJTmRpRUpJQjVCQTBjRVFFRUJJQWxCZnlBRFFRSjJRUWR4SWhoMFFYOXpjU0FEUVFWMmFrRUJhaUlESUI1QkFVWWlIaHNoQ1NBRFFRRWdIaHNoQXlBTklCaHFJUmdNQVFzZ0NVRUhjVUhVblFGcUxRQUFJaDVCQTNFaU15QU5JQU5CQW5aQkIzRWlHMnBxSUI1QkFuWkJCM0VpRFdvaEdDQUpJRE4ySWdsQmZ5QWJkRUYvYzNFZ0EwRUZkbXBCQVdvaEEwRi9JQTEwUVg5eklBa2dHM1p4SUI1QkJYWnFRUUZxSVFrTElBOGdGeUFZYXpZQzhBRWdEeUJnSUJpdGlEY0Q2QUVnQVVId0FYRWlEU0FOUVFGcmNRUkFJQU1nRmtIL0FIRWlGaUFHTFFBQlFmOEFjU0lYSUJZZ0Ywc2JJaFpCQW1zaUYwRUFJQllnRjA4YmFpRURDeUFIUWZBQmNTSVhJQmRCQVd0eEJFQWdDU0FHTFFBQlFmOEFjU0lXSUFZdEFBSkIvd0J4SWhnZ0ZpQVlTeHNpRmtFQ2EwRUFJQlpCQWtzYmFpRUpDeUFESUN4TklBa2dMRTF4UlFSQUlDRUVRRUVBSVFjZ0hVRUJRZjMyQUVFQUVBOE1DUXRCQUNFSElCMUJBVUg5OWdCQkFCQVBEQWdMSUFZdEFBSWhGaUFHUVFBN0FBRWdGeUFOUVFSMmNrSC9BVUgvQVNBRlFRUnFJZzBnRld0QkFYUjJJQTBnRlV3YkloZEIxUUJ4SUJjZ0dTQWZTaHNpR0VGL2MzRUVRQ0FoQkVCQkFDRUhJQjFCQVVHdjJnQkJBQkFQREFrTFFRQWhCeUFkUVFGQnI5b0FRUUFRRHd3SUN3SkFBa0FnQVVFUWNRUkFJQTlCd0FGcUVCc2hIaUFQSUE4b0F0QUJJQU1nQVVFVGRFRWZkV29pRjJzMkF0QUJJQThnRHlrRHlBRWdGNjJJTndQSUFTQWVRWDhnRjNSQmYzTnhJQUZCQ0haQkFYRWdGM1J5UVFGeVFRSnFJQ0IwSUI1QkgzUnlJUmNNQVF0QkFDRVhJQmhCQVhGRkRRRUxJQWdnRnpZQ0FBc0NRQ0FCUVNCeEJFQWdEMEhBQVdvUUd5RWVJQThnRHlnQzBBRWdBeUFCUVJKMFFSOTFhaUlYYXpZQzBBRWdEeUFQS1FQSUFTQVhyWWczQThnQklBZ2dGVUVDZEdvZ0hrRi9JQmQwUVg5emNTQUJRUWwyUVFGeElCZDBja0VCY2lJWFFRSnFJQ0IwSUI1QkgzUnlOZ0lBSUFaQklDQVhaMnNpRnlBR0xRQUFRZjhBY1NJZUlCY2dIa3NiUVlBQmNqb0FBQXdCQ3lBWVFRSnhSUTBBSUFnZ0ZVRUNkR3BCQURZQ0FBc2dDRUVFYWlFZUFrQUNRQ0FxQkVBZ0QwSEFBV29RR3lFYklBOGdEeWdDMEFFZ0F5QUJRUkYwUVI5MWFpSVhhellDMEFFZ0R5QVBLUVBJQVNBWHJZZzNBOGdCSUJ0QmZ5QVhkRUYvYzNFZ0FVRUtka0VCY1NBWGRISkJBWEpCQW1vZ0lIUWdHMEVmZEhJaEZ3d0JDMEVBSVJjZ0dFRUVjVVVOQVFzZ0hpQVhOZ0lBQ3dKQUlDY0VRQ0FQUWNBQmFoQWJJUmNnRHlBUEtBTFFBU0FESUFGQkVIUkJIM1ZxSWdOck5nTFFBU0FQSUE4cEE4Z0JJQU90aURjRHlBRWdIaUFWUVFKMGFpQVhRWDhnQTNSQmYzTnhJQUZCQzNaQkFYRWdBM1J5UVFGeUlnRkJBbW9nSUhRZ0YwRWZkSEkyQWdBZ0JrR2dmeUFCWjJzNkFBRU1BUXNnR0VFSWNVVU5BQ0FlSUJWQkFuUnFRUUEyQWdBTElBaEJDR29oQVFKQUFrQWdCMEVRY1FSQUlBOUJ3QUZxRUJzaEZ5QVBJQThvQXRBQklBa2dCMEVUZEVFZmRXb2lBMnMyQXRBQklBOGdEeWtEeUFFZ0E2MklOd1BJQVNBWFFYOGdBM1JCZjNOeElBZEJDSFpCQVhFZ0EzUnlRUUZ5UVFKcUlDQjBJQmRCSDNSeUlRTU1BUXRCQUNFRElCaEJFSEZGRFFFTElBRWdBellDQUFzQ1FDQUhRU0J4QkVBZ0QwSEFBV29RR3lFWElBOGdEeWdDMEFFZ0NTQUhRUkowUVI5MWFpSURhellDMEFFZ0R5QVBLUVBJQVNBRHJZZzNBOGdCSUFFZ0ZVRUNkR29nRjBGL0lBTjBRWDl6Y1NBSFFRbDJRUUZ4SUFOMGNrRUJjaUlCUVFKcUlDQjBJQmRCSDNSeU5nSUFJQVpCSUNBQloyc2lBU0FHTFFBQlFmOEFjU0lESUFFZ0Ewc2JRWUFCY2pvQUFRd0JDeUFZUVNCeFJRMEFJQUVnRlVFQ2RHcEJBRFlDQUFzZ0NFRU1haUVCQWtBQ1FDQUhRY0FBY1FSQUlBOUJ3QUZxRUJzaEZ5QVBJQThvQXRBQklBa2dCMEVSZEVFZmRXb2lBMnMyQXRBQklBOGdEeWtEeUFFZ0E2MklOd1BJQVNBWFFYOGdBM1JCZjNOeElBZEJDblpCQVhFZ0EzUnlRUUZ5UVFKcUlDQjBJQmRCSDNSeUlRTU1BUXRCQUNFRElCaEJ3QUJ4UlEwQkN5QUJJQU0yQWdBTElBWkJBbW9oQmdKQUlBZEJnQUZ4QkVBZ0QwSEFBV29RR3lFWElBOGdEeWdDMEFFZ0NTQUhRUkIwUVI5MWFpSURhellDMEFFZ0R5QVBLUVBJQVNBRHJZZzNBOGdCSUFFZ0ZVRUNkR29nRjBGL0lBTjBRWDl6Y1NBSFFRdDJRUUZ4SUFOMGNrRUJjaUlCUVFKcUlDQjBJQmRCSDNSeU5nSUFJQVpCb0g4Z0FXZHJPZ0FBREFFTElCaEJnQUZKRFFBZ0FTQVZRUUowYWtFQU5nSUFDeUFpUVJCeklTSWdFU0FGUVFSeGFpRVJJQWhCRUdvaENDQU5JQlZJRFFBTEN3SkFJQXhCQWtrTkFDQVRRUUp4UlEwQUlCbEJCSEVoQXdKQUFuOENRQUpBSURFRVFDQVVJQ1VnQXhzaEZrRUFJUmdnRlVFQVRBMEJJQTRnRTBFQ2F5QVZiRUVDZEdvaEVRTkFJQTlCZ0FGcUVDOGhCMEVBSVFFZ0ZpZ0NBQ0lJQkVBZ0VTQVlRUUowYWlFQlFRQWhDVUVQSVFZRFFBSkFJQVlnQ0hGRkRRQWdCa0dSb3NTSUFYRWlEU0FJY1FSQUlBRWdBU2dDQUNBSFFYOXpRUUZ4SUNCMGN5QXVjallDQUNBSFFRRjJJUWNMSUExQkFYUWdDSEVFUUNBQklCVkJBblJxSWdVZ0JTZ0NBQ0FIUVg5elFRRnhJQ0IwY3lBdWNqWUNBQ0FIUVFGMklRY0xJQTFCQW5RZ0NIRUVRQ0FCSURwQkFuUnFJZ1VnQlNnQ0FDQUhRWDl6UVFGeElDQjBjeUF1Y2pZQ0FDQUhRUUYySVFjTElBMUJBM1FnQ0hGRkRRQWdBU0E1UVFKMGFpSU5JQTBvQWdBZ0IwRi9jMEVCY1NBZ2RITWdMbkkyQWdBZ0IwRUJkaUVIQ3lBQlFRUnFJUUVnQmtFRWRDRUdJQWxCQVdvaUNVRUlSdzBBQ3lBSWFTRUJDeUFXUVFScUlSWWdEeUFQS0FLUUFTQUJhellDa0FFZ0R5QVBLUU9JQVNBQnJZZzNBNGdCSUJoQkNHb2lHQ0FWU0EwQUN3c2dLU0FvSUFNYklRVWdGQ0FsSUFNYklSWWdBMFVoR0NBVlFRQk1EUU5CQUNFRElFQU5BU0FGSUJZZ08ycEpJQllnQlNBN2FpSUhTWEVOQVVFQUlBVWlBU0FXSWdZZ1BtcEJDR3BKSUFaQkJHb2dCMGx4RFFJYUlBWWdQR29oQmlBQklEeHFJUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFoWGtFQUlRY0RRQ0FGSUFkQkFuUWlBMm9pQ1NBRElCWnFJZ1A5QUFJQUlsOUJCUDJ0QVNCZlFRVDlxd0VnWGlCZi9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYlFSejlyUUg5VVAxUUlGLzlVQ0plL1FzQ0FDQUpJRjRnQS8wQUFnUkJIUDJyQWYxUUlsNUJBZjJ0QWYwTWQzZDNkM2QzZDNkM2QzZDNkM2QzZC8xT0lGNUJBZjJyQWYwTTd1N3U3dTd1N3U3dTd1N3U3dTd1N3YxTy9WQWdYdjFRSUYvOVQvMExBZ0FnWHlGZUlBZEJCR29pQnlBY1J3MEFDeUFjSUQ5R0RRTWdFaUVESUY3OUd3TU1BZ3NnQTBVaEdDQXBJQ2dnQXhzaEJRd0NDeUFGSVFFZ0ZpRUdRUUFMSVFjRFFDQUhRUngySVFrZ0FTQUdLQUlBSWdkQkJIWWdDU0FIUVFSMGNuSWdCM0lpQ1RZQ0FDQUJJQWtnQmlnQ0JFRWNkSElpQ1VFQmRrSDM3dDI3QjNFZ0NVRUJkRUh1M2J2M2ZuRnlJQWx5SUFkQmYzTnhOZ0lBSUFGQkJHb2hBU0FHUVFScUlRWWdBMEVJYWlJRElCVklEUUFMQ3lBVFFRWkpEUUJCQUNFSlFRQWhFU0FXSVFFZ0tTQW9JQmdiSWhzaEJ5QVVJQ1VnR0JzaUZ5RUdBa0FnRlVFQVRDSU5EUUFEUUNBQlFRUnFJUU1nQnlnQ0FDRUlJQUVvQWdBaEFTQUhJRGdFZnlBSUJTQUJRUVIwSUJGQkhIWnlJQUZCQkhaeUlBTW9BZ0JCSEhSeUlBRnlRUU4wUVlpUm9zUjRjU0FJY2dzZ0JpZ0NBRUYvYzNFMkFnQWdCa0VFYWlFR0lBZEJCR29oQnlBQklSRWdBeUVCSUFsQkNHb2lDU0FWU0EwQUN5QU5EUUFnRGlBVFFRWnJJQlZzUVFKMGFpRkJRUUFoSGlBWElSRURRRUVBSVFNZ0d5Z0NBQ0lCQkVBZ0ZTQWVheUZDUVFBaEIwRUFJUW9EUUNBSElVMGdEMEdnQVdvUUd5RUhBa0FnQ2lBS1FRUnFJZ1lnUWlBR0lCNXFJQlZJR3lJelRpSkRCRUJCQUNFR0RBRUxJQkVvQWdCQmYzTWhLaUJCSUFvZ0huSkJBblJxSVJoQkFDRUdRUThnQ2lJSlFRSjBJa1IwSWcwaENBTkFBa0FnQVNBSWNVVU5BQ0FJUVpHaXhJZ0JjU0luSUFGeEJFQWdCMEVCY1FSQUlBTWdKM0loQTBFeUlBbEJBblIwSUNweElBRnlJUUVMSUFkQkFYWWhCeUFHUVFGcUlRWUxJQUVnSjBFQmRDSTBjUVJBSUFkQkFYRUVRQ0FESURSeUlRTWdBVUgwQUNBSlFRSjBkQ0FxY1hJaEFRc2dCMEVCZGlFSElBWkJBV29oQmdzZ0FTQW5RUUowSWpSeEJFQWdCMEVCY1FSQUlBTWdOSEloQXlBQlFlZ0JJQWxCQW5SMElDcHhjaUVCQ3lBSFFRRjJJUWNnQmtFQmFpRUdDeUFCSUNkQkEzUWlKM0ZGRFFBZ0IwRUJjUVJBSUFNZ0ozSWhBeUFCUWNBQklBbEJBblIwSUNweGNpRUJDeUFHUVFGcUlRWWdCMEVCZGlFSEN5QUlRUVIwSVFnZ0NVRUJhaUlKSUROSURRQUxJQU1nUkhaQi8vOERjVVVOQUNCRERRQURRQUpBSUFNZ0RYRkZEUUFnRFVHUm9zU0lBWEVpQ1NBRGNRUkFJQmdnR0NnQ0FDQUhRUjkwY2lBdGNqWUNBQ0FIUVFGMklRY2dCa0VCYWlFR0N5QUpRUUYwSUFOeEJFQWdHQ0FWUVFKMGFpSUlJQWdvQWdBZ0IwRWZkSElnTFhJMkFnQWdCMEVCZGlFSElBWkJBV29oQmdzZ0NVRUNkQ0FEY1FSQUlCZ2dPa0VDZEdvaUNDQUlLQUlBSUFkQkgzUnlJQzF5TmdJQUlBZEJBWFloQnlBR1FRRnFJUVlMSUFsQkEzUWdBM0ZGRFFBZ0dDQTVRUUowYWlJSklBa29BZ0FnQjBFZmRISWdMWEkyQWdBZ0JrRUJhaUVHSUFkQkFYWWhCd3NnRFVFRWRDRU5JQmhCQkdvaEdDQUtRUUZxSWdvZ00wZ05BQXNMSUE4Z0R5Z0NzQUVnQm1zMkFyQUJJQThnRHlrRHFBRWdCcTJJTndPb0FVRUJJUWRCQkNFS0lFMUJBWEZGRFFBTElCc2dHeWdDQkNBRFFSdDJRUTV4SUFOQkhYWnlJQU5CSEhaeUlCRW9BZ1JCZjNOeGNqWUNCQXNnRVNnQ0FDQURjaUlEUVFOMlFaR2l4SWdCY1NJQlFRUjJJQUZCQkhSeUlBRnlJUVlnSGdSQUlBVkJCR3NpQnlBSEtBSUFJQlpCQkdzb0FnQkJmM01nQVVFY2RIRnlOZ0lBQ3lBRklBVW9BZ0FnQmlBV0tBSUFRWDl6Y1hJMkFnQWdCU0FGS0FJRUlCWW9BZ1JCZjNNZ0EwRWZkbkZ5TmdJRUlCdEJCR29oR3lBUlFRUnFJUkVnQlVFRWFpRUZJQlpCQkdvaEZpQWVRUWhxSWg0Z0ZVZ05BQXNMSUJkQkFDQTlFQlVhQ3lBWklCOUlEUUFMQ3dKQUlBeEJBa2tOQUFKQUlCOUJBM0ZCQVdzaUZrRUNTU0F4Y1FSQUlCVkJBRXdOQVVFQklDWkJBbXQwSVFJZ0RpQWZRZnovL3dkeElCVnNRUUowYWlFUklDVWdGQ0FmUVFSeEd5RUZJQ1pCQVdzaENFRUFJUW9nRlVFTWJDRU1JQlZCQTNRaEN3TkFJQTlCZ0FGcUVDOGhCMEVBSVFFZ0JTZ0NBQ0lEQkVBZ0VTQUtRUUowYWlFQlFROGhCa0VBSVFrRFFBSkFJQU1nQm5GRkRRQWdCa0dSb3NTSUFYRWlEU0FEY1FSQUlBRWdBU2dDQUNBSFFYOXpRUUZ4SUFoMGN5QUNjallDQUNBSFFRRjJJUWNMSUExQkFYUWdBM0VFUUNBQklCVkJBblJxSWgwZ0hTZ0NBQ0FIUVg5elFRRnhJQWgwY3lBQ2NqWUNBQ0FIUVFGMklRY0xJQTFCQW5RZ0EzRUVRQ0FCSUF0cUloMGdIU2dDQUNBSFFYOXpRUUZ4SUFoMGN5QUNjallDQUNBSFFRRjJJUWNMSUExQkEzUWdBM0ZGRFFBZ0FTQU1haUlOSUEwb0FnQWdCMEYvYzBFQmNTQUlkSE1nQW5JMkFnQWdCMEVCZGlFSEN5QUJRUVJxSVFFZ0JrRUVkQ0VHSUFsQkFXb2lDVUVJUncwQUN5QURhU0VCQ3lBRlFRUnFJUVVnRHlBUEtBS1FBU0FCYXpZQ2tBRWdEeUFQS1FPSUFTQUJyWWczQTRnQklBcEJDR29pQ2lBVlNBMEFDd3NnRmtFQlN3MEFJQlZCQUV3TkFDQWxJQlFnSDBFRWNTSUJHeUVKSUNnZ0tTQUJHeUVDUVFBaEF3Si9Ba0FnS3lBa1FYOXphaUlCUVRoSkRRQWdBaUFKSUFGQkFYWkIvUC8vL3dkeElnWkJCR29pQjJwSklBa2dBaUFIYWlJSFNYRU5BQ0FDSUFZZ0NXcEJDR3BKSUFsQkJHb2dCMGx4RFFBZ0FVRURka0VCYWlJTlFmei8vLzhEY1NJSVFRTjBJUU1nQ1NBSVFRSjBJZ0ZxSVFZZ0FTQUNhaUVCL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSVY1QkFDRUhBMEFnQWlBSFFRSjBJaFpxSWhFZ0NTQVdhaUlXL1FBQ0FDSmZRUVQ5clFFZ1gwRUUvYXNCSUY0Z1gvME5EQTBPRHhBUkVoTVVGUllYR0JrYUcwRWMvYTBCL1ZEOVVDQmYvVkFpWHYwTEFnQWdFU0JlSUJiOUFBSUVRUno5cXdIOVVDSmVRUUg5clFIOURIZDNkM2QzZDNkM2QzZDNkM2QzZDNmOVRpQmVRUUg5cXdIOURPN3U3dTd1N3U3dTd1N3U3dTd1N3U3OVR2MVFJRjc5VUNCZi9VLzlDd0lBSUY4aFhpQUhRUVJxSWdjZ0NFY05BQXNnQ0NBTlJnMENJRjc5R3dNTUFRc2dBaUVCSUFraEJrRUFDeUVIQTBBZ0IwRWNkaUVKSUFFZ0JpZ0NBQ0lIUVFSMklBa2dCMEVFZEhKeUlBZHlJZ2syQWdBZ0FTQUpJQVlvQWdSQkhIUnlJZ2xCQVhaQjkrN2R1d2R4SUFsQkFYUkI3dDI3OTM1eGNpQUpjaUFIUVg5emNUWUNBQ0FCUVFScUlRRWdCa0VFYWlFR0lBTkJDR29pQXlBVlNBMEFDd3NnSHlBZlFRRnFRUU54YTBFRGEwRUFJQjlCQmtvYkloRWdIMDROQUVFRElDWkJBbXQwSVJrZ0t5QWtRWDl6YWlJQlFRTjJJZ05CQW5RaUswRUVhaUVkSUFOQkFXb2lBMEg4Ly8vL0EzRWlFa0VDZENFaElCSkJBM1FoRmlBVlFReHNJU3dnRlVFRGRDRXRJQUZCR0VraEppQURJQkpHSVJzRFFBSkFBa0FDUUFKQUFuOENRQ0FmSUJGcklnRkJBV3NpQTBFRFR3UkFRWDhoRnlBQlFRVklEUVVnRlVFQVRBMEdJQ1VnRkNBUlFRUnhJZ0ViSVFJZ0tDQXBJQUViSVFrZ09BUkFRUUFoQmlBbURRUWdBaUFKSUIxcVNTQUNJQjFxSUFsTGNRMEVJQUlnSVdvaEFTQUpJQ0ZxSVFjRFFDQUpJQVpCQW5RaUEyb2lDQ0FJL1FBQ0FDQUNJQU5xL1FBQ0FQMVAvUXNDQUNBR1FRUnFJZ1lnRWtjTkFBc2dGaUVHSUJzTkJnd0ZDeUFVSUNVZ0FSc2hEVUVBSVFNZ0pnMEJJQWtnRFNBZGFra2dEU0FKSUIxcUlnRkpjUTBCSUFrZ0RTQXJha0VJYWtrZ0RVRUVhaUFCU1hFTkFTQUpJQUlnSFdwSklBRWdBa3R4RFFFZ0FpQWhhaUVJSUFrZ0lXb2hBU0FOSUNGcUlRZjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhYa0VBSVFZRFFDQUpJQVpCQW5RaUEyb2lCU0FESUExcUlnejlBQUlBSWw5QkJQMnRBU0JmUVFUOXF3RWdYaUJmL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iUVJ6OXJRSDlVUDFRSUF6OUFBSUVRUno5cXdIOVVDQmYvVkJCQS8yckFmME1pSWlJaUlpSWlJaUlpSWlJaUlpSWlQMU9JQVg5QUFJQS9WQWdBaUFEYXYwQUFnRDlULzBMQWdBZ1h5RmVJQVpCQkdvaUJpQVNSdzBBQ3lBYkRRVWdGaUVESUY3OUd3TU1BZ3NnQTBFQ2RFSGNuUUZxS0FJQUlSY01CQXNnRFNFSElBa2hBU0FDSVFoQkFBc2hCZ05BSUFaQkhIWWhDU0FCSUFFb0FnQWdCeWdDQUNJR1FRUjJJQWtnQmtFRWRISnlJQWNvQWdSQkhIUnlJQVp5UVFOMFFZaVJvc1I0Y1hJZ0NDZ0NBRUYvYzNFMkFnQWdDRUVFYWlFSUlBRkJCR29oQVNBSFFRUnFJUWNnQTBFSWFpSURJQlZJRFFBTERBSUxJQWtoQnlBQ0lRRUxBMEFnQnlBSEtBSUFJQUVvQWdCQmYzTnhOZ0lBSUFGQkJHb2hBU0FIUVFScUlRY2dCa0VJYWlJR0lCVklEUUFMQ3lBVlFRQk1EUUFnSlNBVUlCRkJCSEVpQVJzaENpQW9JQ2tnQVJzaEFpQVVJQ1VnQVJzaEV5QXBJQ2dnQVJzaEhpQU9JQkVnRld4QkFuUnFJUzVCQUNFRkEwQkJBQ0VESUFJb0FnQWdGM0VpQVFSQUlCVWdCV3NoS2tFQUlRZEJBQ0VOQTBBZ0J5Rk9JQTlCb0FGcUVCc2hCd0pBSUEwZ0RVRUVhaUlHSUNvZ0JTQUdhaUFWU0JzaUpFNGlKd1JBUVFBaEJnd0JDeUFYSUFvb0FnQkJmM054SVJnZ0xpQUZJQTF5UVFKMGFpRUxRUUFoQmtFUElBMGlDVUVDZENJY2RDSWdJUWdEUUFKQUlBRWdDSEZGRFFBZ0NFR1Jvc1NJQVhFaUlpQUJjUVJBSUFkQkFYRUVRQ0FESUNKeUlRTkJNaUFKUVFKMGRDQVljU0FCY2lFQkN5QUhRUUYySVFjZ0JrRUJhaUVHQ3lBQklDSkJBWFFpTVhFRVFDQUhRUUZ4QkVBZ0F5QXhjaUVESUFGQjlBQWdDVUVDZEhRZ0dIRnlJUUVMSUFkQkFYWWhCeUFHUVFGcUlRWUxJQUVnSWtFQ2RDSXhjUVJBSUFkQkFYRUVRQ0FESURGeUlRTWdBVUhvQVNBSlFRSjBkQ0FZY1hJaEFRc2dCMEVCZGlFSElBWkJBV29oQmdzZ0FTQWlRUU4wSWlKeFJRMEFJQWRCQVhFRVFDQURJQ0p5SVFNZ0FVSEFBU0FKUVFKMGRDQVljWEloQVFzZ0JrRUJhaUVHSUFkQkFYWWhCd3NnQ0VFRWRDRUlJQWxCQVdvaUNTQWtTQTBBQ3lBRElCeDJRZi8vQTNGRkRRQWdKdzBBQTBBQ1FDQURJQ0J4UlEwQUlDQkJrYUxFaUFGeElna2dBM0VFUUNBTElBc29BZ0FnQjBFZmRISWdHWEkyQWdBZ0IwRUJkaUVISUFaQkFXb2hCZ3NnQ1VFQmRDQURjUVJBSUFzZ0ZVRUNkR29pQ0NBSUtBSUFJQWRCSDNSeUlCbHlOZ0lBSUFkQkFYWWhCeUFHUVFGcUlRWUxJQWxCQW5RZ0EzRUVRQ0FMSUMxcUlnZ2dDQ2dDQUNBSFFSOTBjaUFaY2pZQ0FDQUhRUUYySVFjZ0JrRUJhaUVHQ3lBSlFRTjBJQU54UlEwQUlBc2dMR29pQ1NBSktBSUFJQWRCSDNSeUlCbHlOZ0lBSUFaQkFXb2hCaUFIUVFGMklRY0xJQ0JCQkhRaElDQUxRUVJxSVFzZ0RVRUJhaUlOSUNSSURRQUxDeUFQSUE4b0FyQUJJQVpyTmdLd0FTQVBJQThwQTZnQklBYXRpRGNEcUFGQkFTRUhRUVFoRFNCT1FRRnhSUTBBQ3lBQ0lBSW9BZ1FnQTBFYmRrRU9jU0FEUVIxMmNpQURRUngyY2lBS0tBSUVRWDl6Y1hJMkFnUUxJQW9vQWdBZ0EzSWlBMEVEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUdJQVVFUUNBZVFRUnJJZ2NnQnlnQ0FDQVRRUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnSGlBZUtBSUFJQVlnRXlnQ0FFRi9jM0Z5TmdJQUlCNGdIaWdDQkNBVEtBSUVRWDl6SUFOQkgzWnhjallDQkNBQ1FRUnFJUUlnQ2tFRWFpRUtJQjVCQkdvaEhpQVRRUVJxSVJNZ0JVRUlhaUlGSUJWSURRQUxDeUFSUVFScUloRWdIMGdOQUFzTFFRRWhCeUFmUVFCTURRTWdGVUVBVEEwRElCVkIvUC8vL3dkeElnWkJBblFoQWlBVlFRUkpJUWhCQUNFSkEwQWdEaUFKSUJWc1FRSjBhaUVEQWtBQ1FDQUlCRUFnQXlFSFFRQWhBUXdCQ3lBQ0lBTnFJUWRCQUNFQkEwQWdBeUFCUVFKMGFpSU5JQTM5QUFJQUlsNzlEUC8vLzMvLy8vOS8vLy8vZi8vLy8zLzlUaUpmL2FFQklGOGdYdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFJQUZCQkdvaUFTQUdSdzBBQ3lBR0lnRWdGVVlOQVFzRFFDQUhRUUFnQnlnQ0FDSURRZi8vLy84SGNTSU5heUFOSUFOQkFFZ2JOZ0lBSUFkQkJHb2hCeUFCUVFGcUlnRWdGVWNOQUFzTFFRRWhCeUFKUVFGcUlna2dIMGNOQUFzTUF3c2dJVVVOQUNBUElCb29BaGcyQWpRZ0R5QVdOZ0l3SUIxQkFVSGN4d0FnRDBFd2FoQVBEQUVMSUE4Z0FUWUNGQ0FQSUJZMkFoQWdIVUVCUWR6SEFDQVBRUkJxRUE5QkFDRUhEQUVMUVFBaEJ3c2dEMEd3QW1va0FDQUhEUUVNQXdzZ0JDQUJRUWwwUWRDcEFXbzJBbXdDZnlBRUtBSjBJUUVDUUFKQUlCb29BaEFnR2lnQ0NHc2lCU0FhS0FJVUlCb29BZ3hySWdsc0lnTWdCQ2dDaEFGTEJFQWdBUkFRSUFRZ0EwRUNkQkFZSWdFMkFuUkJBQ0FCUlEwREdpQUVJQU0yQW9RQkRBRUxJQUZGRFFFTElBRkJBQ0FEUVFKMEVCVWFDeUFFS0FKNElRRUNRQ0FGUVFKcUlnWWdDVUVEYWtFQ2RpSU1RUUpxYkNJRElBUW9Bb2dCVFFSQUlBTkJBblFoQ0F3QkN5QUJFQkFnQkNBRFFRSjBJZ2dRR0NJQk5nSjRJQUVOQUVFQURBRUxJQVFnQXpZQ2lBRWdBVUVBSUFnUUZSb0NRQ0FHUlEwQUlBUW9BbmdpQnlFQkFrQWdCa0VFVHdSQUlBY2dCa0Y4Y1NJTlFRSjBhaUVCUVFBaENBTkFJQWNnQ0VFQ2RHcjlEQUFBSUVrQUFDQkpBQUFnU1FBQUlFbjlDd0lBSUFoQkJHb2lDQ0FOUncwQUN5QUdJQTFHRFFFTEEwQWdBVUdBZ0lESkJEWUNBQ0FCUVFScUlRRWdEVUVCYWlJTklBWkhEUUFMQ3lBSElBeEJBV29nQm14QkFuUnFJUU5CQUNFTkFrQUNRQ0FHUVFSSkJFQWdBeUVCREFFTElBTWdCa0Y4Y1NJTlFRSjBhaUVCUVFBaENBTkFJQU1nQ0VFQ2RHcjlEQUFBSUVrQUFDQkpBQUFnU1FBQUlFbjlDd0lBSUFoQkJHb2lDQ0FOUncwQUN5QUdJQTFHRFFFTEEwQWdBVUdBZ0lESkJEWUNBQ0FCUVFScUlRRWdEVUVCYWlJTklBWkhEUUFMQ3lBSlFRTnhJZ0ZGRFFBZ0JrVU5BRUdBZ0lESUJFR0FnSURBQkVHQWdJQ0FCQ0FCUVFKR0d5QUJRUUZHR3lFTElBY2dCaUFNYkVFQ2RHb2hBMEVBSVEwQ1FDQUdRUVJKQkVBZ0F5RUJEQUVMSUFNZ0JrRjhjU0lOUVFKMGFpRUJJQXY5RVNGZlFRQWhDQU5BSUFNZ0NFRUNkR29nWC8wTEFnQWdDRUVFYWlJSUlBMUhEUUFMSUFZZ0RVWU5BUXNEUUNBQklBczJBZ0FnQVVFRWFpRUJJQTFCQVdvaURTQUdSdzBBQ3dzZ0JDQUpOZ0tBQVNBRUlBVTJBbnhCQVF0RkRRSWdHaWdDSENBUmFpSVpRUjlPQkVBZ0lVVU5BaUFqSUJrMkFoQWdIVUVDUWRYQkFDQWpRUkJxRUE4TUF3c2dCQkJhUVFBaEFTQUVRYkNwQVRZQ1pDQUVRZENlQVRZQ1lDQUVRZkNlQVRZQ0hBSkFBa0FDUUFKQUlCb29BalFpQjBFQlN3MEFJQVFvQXBBQlJRMENJQWNOQUF3QkN5QWFLQUlFSVFNZ0IwRUVUd1JBSUFkQmZIRWhBa0VBSVFZRFFDQURJQVpCQTNScUlnRkJIR29nQVVFVWFpQUJRUXhxSUFIOUNRSUUvVllDQUFIOVZnSUFBdjFXQWdBRElGNzlyZ0VoWGlBR1FRUnFJZ1lnQWtjTkFBc2dYaUJlSUY3OURRZ0pDZ3NNRFE0UEFBRUNBd0FCQWdQOXJnRWlYaUJlSUY3OURRUUZCZ2NBQVFJREFBRUNBd0FCQWdQOXJnSDlHd0FoQVNBQ0lBZEdEUUVMQTBBZ0F5QUNRUU4wYWlnQ0JDQUJhaUVCSUFKQkFXb2lBaUFIUncwQUN3c2dBVUVDYWlJRElBUW9BcGdCU3dSQUlBUW9BcFFCSUFNUUZ5SUdSUTBGSUFRZ0JqWUNsQUVnQVNBR2FrRUFPd0FBSUFRZ0F6WUNtQUVnR2lnQ05DRUhDeUFFS0FLVUFTRWVJQWRGRFFFZ0dpZ0NCQ0VHUVFBaEFrRUFJUUVEUUNBQ0lCNXFJQVlnQVVFRGRDSURhaUlHS0FJQUlBWW9BZ1FRRWhvZ0dpZ0NCQ0lHSUFOcUtBSUVJQUpxSVFJZ0FVRUJhaUlCSUJvb0FqUkpEUUFMREFFTElBZEJBVWNOQVNBYUtBSUVLQUlBSVI0TElCb29BandpQVFSQUlBUW9BblFoTENBRUlBRTJBblFMSUJvb0Fpd0VRQ0FXUVFoeElTVWdCRUVjYWlFUElCWkJBWEVoTFNBV1FRSnhSU0V1UVFJaEh3TkFJQjRnS0dvaEFTQWFLQUlBSUNsQkdHeHFJaUFvQWdBaEF3SkFJQzBnSDBFQ1NTQVpJQm9vQWh4QkJHdE1jWEVpSWdSQUlBUWdBVFlDRkNBRUlBRWdBMm9pQXpZQ0dDQUVJQU12QUFBN0FYQWdBMEgvQVRvQUFDQUVLQUlZUWY4Qk9nQUJJQVJCQURZQ0NDQUVRUUEyQWdBZ0JDQUJOZ0lRREFFTElBUWdBVFlDRkNBRUlBRWdBMm9pQmpZQ0dDQUVJQVl2QUFBN0FYQWdCa0gvQVRvQUFDQUVLQUlZUWY4Qk9nQUJJQVFnQkVFY2FqWUNhQ0FFSUFFMkFoQWdCRUVBTmdJTUlBUWdBd1IvSUFFdEFBQkJFSFFGUVlDQS9BY0xJZ00yQWdCQkFTRUdJQUZCQVdvaENTQUJMUUFCSVFjQ2Z5QUJMUUFBUWY4QlJnUkFJQWRCa0FGUEJFQWdCRUVCTmdJTUlBTkJnUDREY2d3Q0N5QUVJQWsyQWhCQkFDRUdJQWRCQ1hRZ0Eyb01BUXNnQkNBSk5nSVFJQWRCQ0hRZ0EzSUxJUUVnQkNBR05nSUlJQVJCZ0lBQ05nSUVJQVFnQVVFSGREWUNBQXNnSUNnQ0FDRXFBa0FnR1VFQVRBMEFJQ0FvQWdoRkRRQWdJaUF1Y2lFblFRQWhKZ05BQWtBQ1FBSkFBa0FDUUNBZlFRRnJEZ0lCQWdBTElDSUVRRUVCSUJsMElnRkJBWFlnQVhJaEVTQUVLQUo4SWdWQkFuUWlEU0FFS0FKNGFrRU1haUVCSUFRb0FuUWhCa0VBSVFnZ0JDZ0NnQUVpQTBFRVR3UkFJQVZGRFFVZ0JVRURiQ0VDSUFWQkFYUWhERUVBSUJGcklRa0RRQ0FNUVFKMElRdEJBQ0VEQTBBQ1FDQUJJZ2NvQWdBaUFVVU5BQUpBSUFGQmtJQ0FBWEVOQUNBQlFlOERjVVVOQUNBRUtBSUFJUUVDUUNBRUtBSUlJaEFOQUNBQlFmOEJSaUVLSUFRb0FoQWlFQzBBQUNFQkFrQWdDa1VFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlRTmdJSUFrQWdBU0FRZGtFQmNVVU5BQUpBSUJBTkFDQUJRZjhCUmlFS0lBUW9BaEFpRUMwQUFDRUJBa0FnQ2tVRVFDQUVJQUUyQWdBZ0JDQVFRUUZxTmdJUURBRUxJQUZCandGTkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VFRUhJUkFNQWd0Qi93RWhBU0FFUWY4Qk5nSUFDMEVJSVJBTElBUWdFRUVCYXlJUU5nSUlJQVlnQ1NBUklBRWdFSFpCQVhFaUVCczJBZ0FnQkNnQ2ZDRUJJQWRCQkdzaUNpQUtLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBSElBY29BZ0FnRUVFVGRISkJFSEkyQWdBZ0pRMEFJQWRCZmlBQmEwRUNkR29pQVNBQktBSUVRWUNBQW5JMkFnUWdBU0FCS0FJQUlCQkJIM1J5UVlDQUJISTJBZ0FnQVVFRWF5SUJJQUVvQWdCQmdJQUljallDQUFzZ0J5QUhLQUlBUVlDQWdBRnlJZ0UyQWdBTEFrQWdBVUdBZ1lBSWNRMEFJQUZCK0I1eFJRMEFJQVFvQWdBaEFRSkFJQVFvQWdnaUVBMEFJQUZCL3dGR0lRb2dCQ2dDRUNJUUxRQUFJUUVDUUNBS1JRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGckloQTJBZ2dnQndKL0lBRWdFSFpCQVhGRkJFQWdCeWdDQUF3QkN3SkFJQkFOQUNBQlFmOEJSaUVLSUFRb0FoQWlFQzBBQUNFQkFrQWdDa1VFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlRTmdJSUlBWWdEV29nQ1NBUklBRWdFSFpCQVhFaUFSczJBZ0FnQjBFRWF5SVFJQkFvQWdCQmdBSnlOZ0lBSUFjZ0J5Z0NCRUhBQUhJMkFnUWdCeWdDQUNBQlFSWjBja0dBQVhJTFFZQ0FnQWh5SWdFMkFnQUxBa0FnQVVHQWlJREFBSEVOQUNBQlFjRDNBWEZGRFFBZ0JDZ0NBQ0VCQWtBZ0JDZ0NDQ0lRRFFBZ0FVSC9BVVloQ2lBRUtBSVFJaEF0QUFBaEFRSkFJQXBGQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBUWdBVFlDQUNBRUlCQkJBV28yQWhCQkJ5RVFEQUlMUWY4QklRRWdCRUgvQVRZQ0FBdEJDQ0VRQ3lBRUlCQkJBV3NpRURZQ0NDQUhBbjhnQVNBUWRrRUJjVVVFUUNBSEtBSUFEQUVMQWtBZ0VBMEFJQUZCL3dGR0lRb2dCQ2dDRUNJUUxRQUFJUUVDUUNBS1JRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGckloQTJBZ2dnQmlBTGFpQUpJQkVnQVNBUWRrRUJjU0lCR3pZQ0FDQUhRUVJySWhBZ0VDZ0NBRUdBRUhJMkFnQWdCeUFIS0FJRVFZQUVjallDQkNBSEtBSUFJQUZCR1hSeVFZQUljZ3RCZ0lDQXdBQnlJZ0UyQWdBTElBRkJnTUNBZ0FSeERRQWdBVUdBdkE5eFJRMEFJQVFvQWdBaEFRSkFJQVFvQWdnaUVBMEFJQUZCL3dGR0lRb2dCQ2dDRUNJUUxRQUFJUUVDUUNBS1JRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGckloQTJBZ2dnQVNBUWRrRUJjUVJBSUFZZ0FrRUNkR29oVHdKQUlCQU5BQ0FCUWY4QlJpRVVJQVFvQWhBaUVDMEFBQ0VCQWtBZ0ZFVUVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SVFOZ0lJSUU4Z0NTQVJJQUVnRUhaQkFYRWlFQnMyQWdBZ0JDZ0NmQ0VCSUFkQkJHc2lDaUFLS0FJQVFZQ0FBWEkyQWdBZ0J5QUhLQUlFUVlBZ2NqWUNCQ0FISUFjb0FnQWdFRUVjZEhKQmdNQUFjallDQUNBSElBRkJBblJxSWdFZ0FTZ0NCRUVFY2pZQ0JDQUJJQUVvQWd4QkFYSTJBZ3dnQVNBQktBSUlJQkJCRW5SeVFRSnlOZ0lJQ3lBSElBY29BZ0JCZ0lDQWdBUnlOZ0lBQ3lBR1FRUnFJUVlnQjBFRWFpRUJJQU5CQVdvaUF5QUZSdzBBQ3lBSFFReHFJUUVnQmlBQ1FRSjBhaUVHSUFoQkJHb2lDQ0FFS0FLQUFTSURRWHh4U1EwQUN3c2dBeUFJVFEwRElBVkZEUU5CQUNFVFFRQWdFV3NoQ3lBRElSQURRQUpBSUFnZ0VFWUVRQ0FJSVJBTUFRc2dBVUVFYXlFTUlBRW9BZ0FoRFVFQUlRSURRQUpBSUEwZ0FrRURiQ0lIZGlJSlFaQ0FnQUZ4RFFBZ0NVSHZBM0ZGRFFBZ0JDZ0NBQ0VEQWtBZ0JDZ0NDQ0lKRFFBZ0EwSC9BVWNoRUNBRUtBSVFJZ2t0QUFBaEF3SkFJQkJGQkVBZ0EwR1FBVThFUUVIL0FTRURJQVJCL3dFMkFnQU1BZ3NnQkNBRE5nSUFJQVFnQ1VFQmFqWUNFRUVISVFrTUFnc2dCQ0FETmdJQUlBUWdDVUVCYWpZQ0VBdEJDQ0VKQ3lBRUlBbEJBV3NpQ1RZQ0NBSkFJQU1nQ1haQkFYRkZEUUFnQmlBQ0lBVnNRUUowYWlGUUFrQWdDUTBBSUFOQi93RkhJUTBnQkNnQ0VDSUpMUUFBSVFNQ1FDQU5SUVJBSUFOQmtBRlBCRUJCL3dFaEF5QUVRZjhCTmdJQURBSUxJQVFnQXpZQ0FDQUVJQWxCQVdvMkFoQkJCeUVKREFJTElBUWdBellDQUNBRUlBbEJBV28yQWhBTFFRZ2hDUXNnQkNBSlFRRnJJZ2syQWdnZ1VDQUxJQkVnQXlBSmRrRUJjU0lKR3pZQ0FDQUVLQUo4SVJBZ0RDQU1LQUlBUVNBZ0IzUnlOZ0lBSUFFZ0FTZ0NBQ0FKUVJOMFFSQnlJQWQwY2pZQ0FDQUJJQUVvQWdSQkNDQUhkSEkyQWdRZ0FpQWxja1VFUUNBQlFYNGdFR3RCQW5ScUlnTWdBeWdDQkVHQWdBSnlOZ0lFSUFNZ0F5Z0NBQ0FKUVI5MGNrR0FnQVJ5TmdJQUlBTkJCR3NpQXlBREtBSUFRWUNBQ0hJMkFnQUxJQUpCQTBjTkFDQUJJQkJCQW5ScUlnTWdBeWdDQkVFRWNqWUNCQ0FESUFNb0FneEJBWEkyQWd3Z0F5QURLQUlJSUFsQkVuUnlRUUp5TmdJSUN5QUJJQUVvQWdCQmdJQ0FBU0FIZEhJaURUWUNBQ0FFS0FLQUFTRURDeUFESVJBZ0FrRUJhaUlDSUFNZ0NHdEpEUUFMQ3lBR1FRUnFJUVlnQVVFRWFpRUJJQk5CQVdvaUV5QUZSdzBBQ3d3REMwRUFJUWRCQUNFTlFRQWhGd0pBQWtBQ1FBSkFJQVFvQW53aUVFSEFBRWNOQUNBRUtBS0FBVUhBQUVjTkFFRUFRUUVnR1hRaUFVRUJkaUFCY2lJUmF5RUZJQVJCSEdvaEVDQUVLQUo0UVl3Q2FpRUdJQVFvQWdnaENDQUVLQUlFSVFNZ0JDZ0NBQ0VDSUFRb0FtZ2hEQ0FFS0FKMElRRWdGa0VJY1EwQkEwQkJBQ0VYQTBBZ0FTRUpJQVlpQnlnQ0FDSUdCRUFDUUNBR1FaQ0FnQUZ4RFFBZ0JrSHZBM0VpQVVVTkFDQURJQkFnQkNnQ2JDQUJhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFS0lBd2dDMEVJUVF3Z0FTQURTeUlVRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUFvZ0NrVWdGQnNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVFvZ0RDQUxRUXhCQ0NBQklBTkxJaFFiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QUtSU0FLSUJRYkRBRUxJQXNvQWdRTEJIOGdBeUFRSUFjb0FnUkJFWFpCQkhFZ0IwRUVheUlLS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhSQjBMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNZ0ZFSFF1d0ZxTFFBQUlSTWdDU0FGSUJFQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFVUlBd2dDMEVJUVF3Z0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJRZ0ZFVWdEaHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVJRZ0RDQUxRUXhCQ0NBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QVVSU0FVSUE0YkRBRUxJQXNvQWdRTElCTnpJZ0ViTmdJQUlBb2dDaWdDQUVFZ2NqWUNBQ0FISUFjb0FnUkJDSEkyQWdRZ0IwR01BbXNpQ3lBTEtBSUFRWUNBQ0hJMkFnQWdCMEdFQW1zaUN5QUxLQUlBUVlDQUFuSTJBZ0FnQjBHSUFtc2lDeUFMS0FJQUlBRkJIM1J5UVlDQUJISTJBZ0FnQmlBQlFSTjBja0VRY2dVZ0JndEJnSUNBQVhJaEJnc0NRQ0FHUVlDQmdBaHhEUUFnQmtINEhuRkZEUUFnQXlBUUlBUW9BbXdnQmtFRGRpSVVRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJNYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVRHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJSMlFRUnhJQWRCQkdzaUNpZ0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCUkJxZ0Z4Y25KeWNpSVVRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCMExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNnQUlnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFZZ0FVRVdkSEpCZ0FGeUJTQUdDMEdBZ0lBSWNpRUdDd0pBSUFaQmdJaUF3QUJ4RFFBZ0JrSEE5d0Z4UlEwQUlBTWdFQ0FFS0FKc0lBWkJCbllpRkVIdkEzRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXdKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVFvZ0RDQUxRUWhCRENBQklBTkxJaE1iYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nQ2lBS1JTQVRHd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoQ2lBTUlBdEJERUVJSUFFZ0Ewc2lFeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBcEZJQW9nRXhzTUFRc2dDeWdDQkFzRWZ5QURJQkFnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ29vQWdCQkdYWkJBWEVnQmtFU2RrRVFjU0FHUVJaMlFjQUFjU0FVUWFvQmNYSnljbklpRkVIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXlBVVFkQzdBV290QUFBaEV5QUpJQVVnRVFKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVJRZ0RDQUxRUWhCRENBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRkNBVVJTQU9Hd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoRkNBTUlBdEJERUVJSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElCUkZJQlFnRGhzTUFRc2dDeWdDQkFzZ0UzTWlBUnMyQW9BRUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUdJQUZCR1hSeVFZQUljZ1VnQmd0QmdJQ0F3QUJ5SVFZTEFrQWdCa0dBd0lDQUJIRU5BQ0FHUVlDOEQzRkZEUUFnQXlBUUlBUW9BbXdnQmtFSmRpSVVRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJNYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVRHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJwMlFRUnhJQWRCQkdzaUNpZ0NBRUVjZGtFQmNTQUdRUlYyUVJCeElBWkJHWFpCd0FCeElCUkJxZ0Z4Y25KeWNpSVVRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCMExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNnQVlnQ2lBS0tBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBSElBY29Bb1FDUVFSeU5nS0VBaUFISUFjb0Fvd0NRUUZ5TmdLTUFpQUhJQWNvQW9nQ0lBRkJFblJ5UVFKeU5nS0lBaUFHSUFGQkhIUnlRWURBQUhJRklBWUxRWUNBZ0lBRWNpRUdDeUFISUFZMkFnQUxJQWRCQkdvaEJpQUpRUVJxSVFFZ0YwRUJhaUlYUWNBQVJ3MEFDeUFIUVF4cUlRWWdDVUdFQm1vaEFTQU5RVHhKSVZFZ0RVRUVhaUVOSUZFTkFBc01BZ3RCQVNBWmRDSUJRUUYySUFGeUlRMGdCQ2dDZUNJSklCQkJBblJxUVF4cUlRWWdCQ2dDZ0FFaEFTQUVLQUlJSVFnZ0JDZ0NCQ0VESUFRb0FnQWhBaUFFS0FKb0lRd2dCQ2dDZENFUkFrQWdGa0VJY1FSQUFrQWdBVUVFU1EwQUlCQUVRRUVBSUExcklSUWdCRUVjYWlFRklCQkJER3doRXlBUVFRTjBJUlVEUUVFQUlRc0RRQ0FHSWdrb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdBeUFGSUFRb0Ftd2dBV290QUFCQkFuUnFJZ3dvQWdBaUNpZ0NBQ0lCYXlFREFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaERpQU1JQXBCREVFSUlBRWdBMHNpRWh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQTVGSUE0Z0Voc01BUXNnQ2lnQ0JDRU9JQXdnQ2tFSVFRd2dBU0FEU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBNGdEa1VnRWhzTEJIOGdBeUFGSUFrb0FnUkJFWFpCQkhFZ0NVRUVheUlPS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQjBMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNZ0VrSFF1d0ZxTFFBQUlSZ2dFU0FVSUEwQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFU0lBd2dDa0VNUVFnZ0FTQURTeUliRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dFa1VnRWlBYkd3d0JDeUFLS0FJRUlSSWdEQ0FLUVFoQkRDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0VpQVNSU0FiR3dzZ0dITWlBUnMyQWdBZ0RpQU9LQUlBUVNCeU5nSUFJQWtnQ1NnQ0JFRUljallDQkNBR0lBRkJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRElBVWdCQ2dDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1DZnlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1FSQUlBb29BZ1FNQWdzZ0NpZ0NCQ0VPSUF3Z0NrRU1RUWdnQVNBRFN5SVlHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0RrVWdEaUFZR3d3QkN5QUtLQUlFSVE0Z0RDQUtRUWhCRENBQklBTkxJaGdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBeUFJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FLTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRGlBT1JTQVlHd3NFZnlBRElBVWdDU2dDQkVFVWRrRUVjU0FKUVFScklnNG9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBeUFTUWRDN0FXb3RBQUFoR0NBUklCQkJBblJxSUJRZ0RRSi9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlSSWdEQ0FLUVF4QkNDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFTUlNBU0lCc2JEQUVMSUFvb0FnUWhFaUFNSUFwQkNFRU1JQUVnQTBzaUd4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVNJQkpGSUJzYkN5QVljeUlCR3pZQ0FDQU9JQTRvQWdCQmdBSnlOZ0lBSUFrZ0NTZ0NCRUhBQUhJMkFnUWdCaUFCUVJaMGNrR0FBWElGSUFZTFFZQ0FnQWh5SVFZTEFrQWdCa0dBaUlEQUFIRU5BQ0FHUWNEM0FYRkZEUUFnQXlBRklBUW9BbXdnQmtFR2RpSVNRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJUUVJBSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhEaUFNSUFwQkRFRUlJQUVnQTBzaUdCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUE1RklBNGdHQnNNQVFzZ0NpZ0NCQ0VPSUF3Z0NrRUlRUXdnQVNBRFN5SVlHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRTWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDallDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQTRnRGtVZ0dCc0xCSDhnQXlBRklBa29BZ1JCRjNaQkJIRWdDVUVFYXlJT0tBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0VrR3FBWEZ5Y25KeUloSkIwTGtCYWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTWdFa0hRdXdGcUxRQUFJUmdnRVNBVmFpQVVJQTBDZnlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1FSQUlBb29BZ1FNQWdzZ0NpZ0NCQ0VTSUF3Z0NrRU1RUWdnQVNBRFN5SWJHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0VrVWdFaUFiR3d3QkN5QUtLQUlFSVJJZ0RDQUtRUWhCRENBQklBTkxJaHNiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBeUFJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FLTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRWlBU1JTQWJHd3NnR0hNaUFSczJBZ0FnRGlBT0tBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFZZ0FVRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQURJQVVnQkNnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFT0lBd2dDa0VNUVFnZ0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dEa1VnRGlBWUd3d0JDeUFLS0FJRUlRNGdEQ0FLUVFoQkRDQUJJQU5MSWhnYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0RpQU9SU0FZR3dzRWZ5QURJQVVnQ1NnQ0JFRWFka0VFY1NBSlFRUnJJZzRvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXlBU1FkQzdBV290QUFBaEdDQVJJQk5xSUJRZ0RRSi9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlSSWdEQ0FLUVF4QkNDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFTUlNBU0lCc2JEQUVMSUFvb0FnUWhFaUFNSUFwQkNFRU1JQUVnQTBzaUd4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVNJQkpGSUJzYkN5QVljeUlLR3pZQ0FDQU9JQTRvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQVFvQW54QkFuUWdDV29pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dDa0VTZEhKQkFuSTJBZ2dnQmlBS1FSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdFVUVFYWlFUklBdEJBV29pQ3lBUVJ3MEFDeUFKUVF4cUlRWWdFU0FUYWlFUklBZEJCR29pQnlBRUtBS0FBU0lCUVh4eFNRMEFDd3dCQzBFRUlBRkJmSEVpQmlBR1FRUk5HMEVCYXlJR1FYeHhRUVJxSVFjZ0NTQUdRUUYwUVhoeGFrRVVhaUVHQ3lBRUlBZzJBZ2dnQkNBRE5nSUVJQVFnQWpZQ0FDQUVJQXcyQW1nZ0VFVU5BU0FCSUFkTkRRRURRQ0FCSUFkR0lWSkJBQ0VJSUFjaEFTQlNSUVJBQTBBZ0JDQUdJQkVnQ0NBUWJFRUNkR29nRFNBSUlBUW9BbnhCQW1wQkFSQlpJQWhCQVdvaUNDQUVLQUtBQVNJQklBZHJTUTBBQ3dzZ0JrRUVhaUVHSUJGQkJHb2hFU0FYUVFGcUloY2dFRWNOQUFzTUFRc0NRQ0FCUVFSSkRRQWdFQVJBUVFBZ0RXc2hGQ0FFUVJ4cUlRVWdFRUVNYkNFVElCQkJBM1FoRlFOQVFRQWhDd05BSUFZaUNTZ0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FESUFVZ0JDZ0NiQ0FCYWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTUNmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRU9JQXdnQ2tFTVFRZ2dBU0FEU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRGtVZ0RpQVNHd3dCQ3lBS0tBSUVJUTRnRENBS1FRaEJEQ0FCSUFOTEloSWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdEaUFPUlNBU0d3c0VmeUFESUFVZ0NTZ0NCRUVSZGtFRWNTQUpRUVJySWc0b0FnQkJFM1pCQVhFZ0JrRU9ka0VRY1NBR1FSQjJRY0FBY1NBR1Fhb0JjWEp5Y25JaUVrSFF1UUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF5QVNRZEM3QVdvdEFBQWhHQ0FSSUJRZ0RRSi9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlSSWdEQ0FLUVF4QkNDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFTUlNBU0lCc2JEQUVMSUFvb0FnUWhFaUFNSUFwQkNFRU1JQUVnQTBzaUd4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVNJQkpGSUJzYkN5QVljeUlLR3pZQ0FDQU9JQTRvQWdCQklISTJBZ0FnQ1NBSktBSUVRUWh5TmdJRUlBbEJmaUFFS0FKOGEwRUNkR29pQVNBQktBSUVRWUNBQW5JMkFnUWdBU0FCS0FJQUlBcEJIM1J5UVlDQUJISTJBZ0FnQVVFRWF5SUJJQUVvQWdCQmdJQUljallDQUNBR0lBcEJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRElBVWdCQ2dDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1DZnlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1FSQUlBb29BZ1FNQWdzZ0NpZ0NCQ0VPSUF3Z0NrRU1RUWdnQVNBRFN5SVlHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0RrVWdEaUFZR3d3QkN5QUtLQUlFSVE0Z0RDQUtRUWhCRENBQklBTkxJaGdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBeUFJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FLTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRGlBT1JTQVlHd3NFZnlBRElBVWdDU2dDQkVFVWRrRUVjU0FKUVFScklnNG9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBeUFTUWRDN0FXb3RBQUFoR0NBUklCQkJBblJxSUJRZ0RRSi9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlSSWdEQ0FLUVF4QkNDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFTUlNBU0lCc2JEQUVMSUFvb0FnUWhFaUFNSUFwQkNFRU1JQUVnQTBzaUd4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVNJQkpGSUJzYkN5QVljeUlCR3pZQ0FDQU9JQTRvQWdCQmdBSnlOZ0lBSUFrZ0NTZ0NCRUhBQUhJMkFnUWdCaUFCUVJaMGNrR0FBWElGSUFZTFFZQ0FnQWh5SVFZTEFrQWdCa0dBaUlEQUFIRU5BQ0FHUWNEM0FYRkZEUUFnQXlBRklBUW9BbXdnQmtFR2RpSVNRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJUUVJBSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhEaUFNSUFwQkRFRUlJQUVnQTBzaUdCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUE1RklBNGdHQnNNQVFzZ0NpZ0NCQ0VPSUF3Z0NrRUlRUXdnQVNBRFN5SVlHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRTWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDallDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQTRnRGtVZ0dCc0xCSDhnQXlBRklBa29BZ1JCRjNaQkJIRWdDVUVFYXlJT0tBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0VrR3FBWEZ5Y25KeUloSkIwTGtCYWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTWdFa0hRdXdGcUxRQUFJUmdnRVNBVmFpQVVJQTBDZnlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1FSQUlBb29BZ1FNQWdzZ0NpZ0NCQ0VTSUF3Z0NrRU1RUWdnQVNBRFN5SWJHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0VrVWdFaUFiR3d3QkN5QUtLQUlFSVJJZ0RDQUtRUWhCRENBQklBTkxJaHNiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBeUFJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FLTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRWlBU1JTQWJHd3NnR0hNaUFSczJBZ0FnRGlBT0tBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFZZ0FVRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQURJQVVnQkNnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFT0lBd2dDa0VNUVFnZ0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dEa1VnRGlBWUd3d0JDeUFLS0FJRUlRNGdEQ0FLUVFoQkRDQUJJQU5MSWhnYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0RpQU9SU0FZR3dzRWZ5QURJQVVnQ1NnQ0JFRWFka0VFY1NBSlFRUnJJZzRvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXlBU1FkQzdBV290QUFBaEdDQVJJQk5xSUJRZ0RRSi9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlSSWdEQ0FLUVF4QkNDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFTUlNBU0lCc2JEQUVMSUFvb0FnUWhFaUFNSUFwQkNFRU1JQUVnQTBzaUd4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVNJQkpGSUJzYkN5QVljeUlLR3pZQ0FDQU9JQTRvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQVFvQW54QkFuUWdDV29pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dDa0VTZEhKQkFuSTJBZ2dnQmlBS1FSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdFVUVFYWlFUklBdEJBV29pQ3lBUVJ3MEFDeUFKUVF4cUlRWWdFU0FUYWlFUklBZEJCR29pQnlBRUtBS0FBU0lCUVh4eFNRMEFDd3dCQzBFRUlBRkJmSEVpQmlBR1FRUk5HMEVCYXlJR1FYeHhRUVJxSVFjZ0NTQUdRUUYwUVhoeGFrRVVhaUVHQ3lBRUlBZzJBZ2dnQkNBRE5nSUVJQVFnQWpZQ0FDQUVJQXcyQW1nZ0VFVU5BQ0FCSUFkTkRRQURRQ0FCSUFkR0lWTkJBQ0VJSUFjaEFTQlRSUVJBQTBBZ0JDQUdJQkVnQ0NBUWJFRUNkR29nRFNBSUlBUW9BbnhCQW1wQkFCQlpJQWhCQVdvaUNDQUVLQUtBQVNJQklBZHJTUTBBQ3dzZ0JrRUVhaUVHSUJGQkJHb2hFU0FYUVFGcUloY2dFRWNOQUFzTERBSUxBMEJCQUNFWEEwQWdBU0VKSUFZaUJ5Z0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FESUJBZ0JDZ0NiQ0FCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRUtJQXdnQzBFSVFRd2dBU0FEU3lJVUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBb2dDa1VnRkJzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlRb2dEQ0FMUVF4QkNDQUJJQU5MSWhRYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFLUlNBS0lCUWJEQUVMSUFzb0FnUUxCSDhnQXlBUUlBY29BZ1JCRVhaQkJIRWdCMEVFYXlJS0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloUkIwTGtCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTWdGRUhRdXdGcUxRQUFJUk1nQ1NBRklCRUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRVVJQXdnQzBFSVFRd2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCUWdGRVVnRGhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlSUWdEQ0FMUVF4QkNDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFVUlNBVUlBNGJEQUVMSUFzb0FnUUxJQk56SWdFYk5nSUFJQW9nQ2lnQ0FFRWdjallDQUNBSElBY29BZ1JCQ0hJMkFnUWdCaUFCUVJOMGNrRVFjZ1VnQmd0QmdJQ0FBWEloQmdzQ1FDQUdRWUNCZ0FoeERRQWdCa0g0SG5GRkRRQWdBeUFRSUFRb0Ftd2dCa0VEZGlJVVFlOERjV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFREFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaENpQU1JQXRCQ0VFTUlBRWdBMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBS0lBcEZJQk1iREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFS0lBd2dDMEVNUVFnZ0FTQURTeUlURzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dDa1VnQ2lBVEd3d0JDeUFMS0FJRUN3Ui9JQU1nRUNBSEtBSUVRUlIyUVFSeElBZEJCR3NpQ2lnQ0FFRVdka0VCY1NBR1FROTJRUkJ4SUFaQkUzWkJ3QUJ4SUJSQnFnRnhjbkp5Y2lJVVFkQzVBV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFRElCUkIwTHNCYWkwQUFDRVRJQWtnQlNBUkFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaEZDQU1JQXRCQ0VFTUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBVUlCUkZJQTRiREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFVUlBd2dDMEVNUVFnZ0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dGRVVnRkNBT0d3d0JDeUFMS0FJRUN5QVRjeUlCR3pZQ2dBSWdDaUFLS0FJQVFZQUNjallDQUNBSElBY29BZ1JCd0FCeU5nSUVJQVlnQVVFV2RISkJnQUZ5QlNBR0MwR0FnSUFJY2lFR0N3SkFJQVpCZ0lpQXdBQnhEUUFnQmtIQTl3RnhSUTBBSUFNZ0VDQUVLQUpzSUFaQkJuWWlGRUh2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBd0ovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUW9nRENBTFFRaEJEQ0FCSUFOTEloTWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdDaUFLUlNBVEd3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhDaUFNSUF0QkRFRUlJQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFwRklBb2dFeHNNQVFzZ0N5Z0NCQXNFZnlBRElCQWdCeWdDQkVFWGRrRUVjU0FIUVFScklnb29BZ0JCR1haQkFYRWdCa0VTZGtFUWNTQUdRUloyUWNBQWNTQVVRYW9CY1hKeWNuSWlGRUhRdVFGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBeUFVUWRDN0FXb3RBQUFoRXlBSklBVWdFUUovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUlFnRENBTFFRaEJEQ0FCSUFOTElnNGJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdGQ0FVUlNBT0d3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhGQ0FNSUF0QkRFRUlJQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUJSRklCUWdEaHNNQVFzZ0N5Z0NCQXNnRTNNaUFSczJBb0FFSUFvZ0NpZ0NBRUdBRUhJMkFnQWdCeUFIS0FJRVFZQUVjallDQkNBR0lBRkJHWFJ5UVlBSWNnVWdCZ3RCZ0lDQXdBQnlJUVlMQWtBZ0JrR0F3SUNBQkhFTkFDQUdRWUM4RDNGRkRRQWdBeUFRSUFRb0Ftd2dCa0VKZGlJVVFlOERjV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFREFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaENpQU1JQXRCQ0VFTUlBRWdBMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBS0lBcEZJQk1iREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFS0lBd2dDMEVNUVFnZ0FTQURTeUlURzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dDa1VnQ2lBVEd3d0JDeUFMS0FJRUN3Ui9JQU1nRUNBSEtBSUVRUnAyUVFSeElBZEJCR3NpQ2lnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJSQnFnRnhjbkp5Y2lJVVFkQzVBV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFRElCUkIwTHNCYWkwQUFDRVRJQWtnQlNBUkFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaEZDQU1JQXRCQ0VFTUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBVUlCUkZJQTRiREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFVUlBd2dDMEVNUVFnZ0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dGRVVnRkNBT0d3d0JDeUFMS0FJRUN5QVRjeUlCR3pZQ2dBWWdDaUFLS0FJQVFZQ0FBWEkyQWdBZ0J5QUhLQUlFUVlBZ2NqWUNCQ0FISUFjb0FvUUNRUVJ5TmdLRUFpQUhJQWNvQW93Q1FRRnlOZ0tNQWlBSElBY29Bb2dDSUFGQkVuUnlRUUp5TmdLSUFpQUdJQUZCSEhSeVFZREFBSElGSUFZTFFZQ0FnSUFFY2lFR0N5QUhJQVkyQWdBTElBZEJCR29oQmlBSlFRUnFJUUVnRjBFQmFpSVhRY0FBUncwQUN5QUhRUXhxSVFZZ0NVR0VCbW9oQVNBTlFUeEpJVlFnRFVFRWFpRU5JRlFOQUFzTElBUWdDRFlDQ0NBRUlBTTJBZ1FnQkNBQ05nSUFJQVFnRERZQ2FBc01BZ3NnSWdSQVFRRWdHWFJCQVhZaENTQUVLQUo4SWhGQkFuUWlEQ0FFS0FKNGFrRU1haUVCSUFRb0FuUWhCa0VBSVEwZ0JDZ0NnQUVpQTBFRVR3UkFJQkZGRFFRZ0VVRURiQ0VGSUJGQkFYUWhDMEVBSUFscklRSURRQ0FMUVFKMElRcEJBQ0VEQTBBQ1FDQUJJZ2NvQWdBaUFVVU5BQ0FCUVpDQWdBRnhRUkJHQkVBZ0JDZ0NBQ0VCQWtBZ0JDZ0NDQ0lRRFFBZ0FVSC9BVVloRUNBRUtBSVFJZ2d0QUFBaEFRSkFJQkJGQkVBZ0JDQUJOZ0lBSUFRZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBUWdBVFlDQUNBRUlBaEJBV28yQWhCQkJ5RVFEQUlMUWY4QklRRWdCRUgvQVRZQ0FBdEJDQ0VRQ3lBRUlCQkJBV3NpQ0RZQ0NDQUdJQUlnQ1NBQklBaDJRUUZ4SUFZb0FnQWlBVUVmZGtZYklBRnFOZ0lBSUFjZ0J5Z0NBRUdBZ01BQWNpSUJOZ0lBQ3lBQlFZQ0JnQWh4UVlBQlJnUkFJQVFvQWdBaEFRSkFJQVFvQWdnaUVBMEFJQUZCL3dGR0lSQWdCQ2dDRUNJSUxRQUFJUUVDUUNBUVJRUkFJQVFnQVRZQ0FDQUVJQWhCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FJUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGcklnZzJBZ2dnQmlBTWFpSVFJQUlnQ1NBQklBaDJRUUZ4SUJBb0FnQWlBVUVmZGtZYklBRnFOZ0lBSUFjZ0J5Z0NBRUdBZ0lBRWNpSUJOZ0lBQ3lBQlFZQ0lnTUFBY1VHQUNFWUVRQ0FFS0FJQUlRRUNRQ0FFS0FJSUloQU5BQ0FCUWY4QlJpRVFJQVFvQWhBaUNDMEFBQ0VCQWtBZ0VFVUVRQ0FFSUFFMkFnQWdCQ0FJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnQ0VFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SUlOZ0lJSUFZZ0Ntb2lFQ0FDSUFrZ0FTQUlka0VCY1NBUUtBSUFJZ0ZCSDNaR0d5QUJhallDQUNBSElBY29BZ0JCZ0lDQUlISWlBVFlDQUFzZ0FVR0F3SUNBQkhGQmdNQUFSdzBBSUFZZ0JVRUNkR29oRUNBRUtBSUFJUUVDUUNBRUtBSUlJZ2dOQUNBQlFmOEJSaUVVSUFRb0FoQWlDQzBBQUNFQkFrQWdGRVVFUUNBRUlBRTJBZ0FnQkNBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0NFRUJhallDRUVFSElRZ01BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUWdMSUFRZ0NFRUJheUlJTmdJSUlCQWdBaUFKSUFFZ0NIWkJBWEVnRUNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQnlBSEtBSUFRWUNBZ0lBQ2NqWUNBQXNnQmtFRWFpRUdJQWRCQkdvaEFTQURRUUZxSWdNZ0VVY05BQXNnQjBFTWFpRUJJQVlnQlVFQ2RHb2hCaUFOUVFScUlnMGdCQ2dDZ0FFaUEwRjhjVWtOQUFzTElBTWdEVTBOQWlBUlJRMENRUUFoRTBFQUlBbHJJUVVnQXlFSEEwQUNRQ0FISUExR0JFQWdEU0VIREFFTElBRW9BZ0FoRUVFQUlRSURRRUdRZ0lBQklBSkJBMndpQjNRZ0VIRkJFQ0FIZEVZRVFDQUdJQUlnRVd4QkFuUnFJUkFnQkNnQ0FDRURBa0FnQkNnQ0NDSUlEUUFnQTBIL0FVY2hEQ0FFS0FJUUlnZ3RBQUFoQXdKQUlBeEZCRUFnQTBHUUFVOEVRRUgvQVNFRElBUkIvd0UyQWdBTUFnc2dCQ0FETmdJQUlBUWdDRUVCYWpZQ0VFRUhJUWdNQWdzZ0JDQUROZ0lBSUFRZ0NFRUJhallDRUF0QkNDRUlDeUFFSUFoQkFXc2lDRFlDQ0NBUUlBVWdDU0FESUFoMlFRRnhJQkFvQWdBaUEwRWZka1liSUFOcU5nSUFJQUVnQVNnQ0FFR0FnTUFBSUFkMGNpSVFOZ0lBSUFRb0FvQUJJUU1MSUFNaEJ5QUNRUUZxSWdJZ0F5QU5hMGtOQUFzTElBWkJCR29oQmlBQlFRUnFJUUVnRTBFQmFpSVRJQkZIRFFBTERBSUxJQVFvQW5naENDQUVLQUowSVFjZ0JDZ0NnQUVoQXdKQUlBUW9BbndpREVIQUFFY05BQ0FEUWNBQVJ3MEFJQWhCakFKcUlRTkJBQ0VUUVFCQkFTQVpkRUVCZGlJRmF5RU1JQVFvQWdnaEFpQUVLQUlFSVFZZ0JDZ0NBQ0VCSUFRb0FtZ2hEUU5BUVFBaENBTkFJQWNoQ1NBREloQW9BZ0FpQndSQUlBTWhWU0FIUVpDQWdBRnhRUkJHQkVBZ0JpQVBRUkJCRDBFT0lBZEI3d054R3lBSFFZQ0F3QUJ4RzBFQ2RHb2lEU2dDQUNJUktBSUFJZ05ySVFZQ2Z5QURJQUZCRUhaTEJFQWdFU2dDQkNFTElBMGdFVUVJUVF3Z0F5QUdTeUlLRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnSkJBV29oRVNBQ0xRQUJJUVlnQWkwQUFFSC9BVVlFUUNBR1FaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlNQWdzZ0JDQVJOZ0lRSUFaQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBUk5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTElBSkJBV3NoQWlBQlFRRjBJUUVnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVHSUFzZ0MwVWdDaHNNQVFzZ0FTQURRUkIwYXlFQklBWkJnSUFDY1VVRVFDQVJLQUlFSVFzZ0RTQVJRUXhCQ0NBRElBWkxJZ29iYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUFrRUJhaUVSSUFJdEFBRWhBeUFDTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRUlCRTJBaEFnQTBFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUJFMkFoQkJDQ0VDSUFOQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FHUVFGMElnWkJnSUFDU1EwQUN5QUxSU0FMSUFvYkRBRUxJQkVvQWdRTElRTWdDU0FNSUFVZ0F5QUpLQUlBSWhGQkgzWkdHeUFSYWpZQ0FDQUhRWUNBd0FCeUlRY0xJQWRCZ0lHQUNIRkJnQUZHQkVBZ0JpQVBRUkJCRDBFT0lBZEIrQjV4R3lBSFFZQ0FnQVJ4RzBFQ2RHb2lEU2dDQUNJUktBSUFJZ05ySVFZQ2Z5QURJQUZCRUhaTEJFQWdFU2dDQkNFTElBMGdFVUVJUVF3Z0F5QUdTeUlLRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnSkJBV29oRVNBQ0xRQUJJUVlnQWkwQUFFSC9BVVlFUUNBR1FaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlNQWdzZ0JDQVJOZ0lRSUFaQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBUk5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTElBSkJBV3NoQWlBQlFRRjBJUUVnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVHSUFzZ0MwVWdDaHNNQVFzZ0FTQURRUkIwYXlFQklBWkJnSUFDY1VVRVFDQVJLQUlFSVFzZ0RTQVJRUXhCQ0NBRElBWkxJZ29iYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUFrRUJhaUVSSUFJdEFBRWhBeUFDTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRUlCRTJBaEFnQTBFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUJFMkFoQkJDQ0VDSUFOQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FHUVFGMElnWkJnSUFDU1EwQUN5QUxSU0FMSUFvYkRBRUxJQkVvQWdRTElRTWdDU0FNSUFVZ0F5QUpLQUtBQWlJUlFSOTJSaHNnRVdvMkFvQUNJQWRCZ0lDQUJISWhCd3NnQjBHQWlJREFBSEZCZ0FoR0JFQWdCaUFQUVJCQkQwRU9JQWRCd1BjQmNSc2dCMEdBZ0lBZ2NSdEJBblJxSWcwb0FnQWlFU2dDQUNJRGF5RUdBbjhnQXlBQlFSQjJTd1JBSUJFb0FnUWhDeUFOSUJGQkNFRU1JQU1nQmtzaUNodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lDUVFGcUlSRWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQVFnRVRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdFVFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJpQUxJQXRGSUFvYkRBRUxJQUVnQTBFUWRHc2hBU0FHUVlDQUFuRkZCRUFnRVNnQ0JDRUxJQTBnRVVFTVFRZ2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFNZ0FpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBTkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQURRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBUktBSUVDeUVESUFrZ0RDQUZJQU1nQ1NnQ2dBUWlFVUVmZGtZYklCRnFOZ0tBQkNBSFFZQ0FnQ0J5SVFjTElGVWdCMEdBd0lDQUJIRkJnTUFBUmdSL0lBWWdEMEVRUVE5QkRpQUhRWUM4RDNFYklBZEJnSUNBZ0FKeEcwRUNkR29pRFNnQ0FDSVJLQUlBSWdOcklRWUNmeUFESUFGQkVIWkxCRUFnRVNnQ0JDRUxJQTBnRVVFSVFRd2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFZZ0FpMEFBRUgvQVVZRVFDQUdRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQUdRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lBc2dDMFVnQ2hzTUFRc2dBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NVVUVRQ0FSS0FJRUlRc2dEU0FSUVF4QkNDQURJQVpMSWdvYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFUklBSXRBQUVoQXlBQ0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWd3Q0N5QUVJQkUyQWhBZ0EwRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlCRTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUJFb0FnUUxJUU1nQ1NBTUlBVWdBeUFKS0FLQUJpSVJRUjkyUmhzZ0VXbzJBb0FHSUFkQmdJQ0FnQUp5QlNBSEN6WUNBQXNnRUVFRWFpRURJQWxCQkdvaEJ5QUlRUUZxSWdoQndBQkhEUUFMSUJCQkRHb2hBeUFKUVlRR2FpRUhJQk5CUEVraFZpQVRRUVJxSVJNZ1ZnMEFDeUFFSUFJMkFnZ2dCQ0FHTmdJRUlBUWdBVFlDQUNBRUlBMDJBbWdNQWd0QkFTQVpkRUVCZGlFTElBZ2dERUVDZENJT2FrRU1haUVKSUFRb0FnZ2hBaUFFS0FJRUlRWWdCQ2dDQUNFQklBUW9BbWdoRFVFQUlSRUNRQ0FEUVFSSkRRQWdEQVJBSUF4QkEyd2hGQ0FNUVFGMElSZEJBQ0FMYXlFS0EwQWdGMEVDZENFU1FRQWhDQU5BSUFraUJTZ0NBQ0lRQkVBZ0VFR1FnSUFCY1VFUVJnUkFJQVlnRDBFUVFROUJEaUFRUWU4RGNSc2dFRUdBZ01BQWNSdEJBblJxSWcwb0FnQWlDU2dDQUNJRGF5RUdBbjhnQXlBQlFSQjJUUVJBSUFFZ0EwRVFkR3NoQVNBR1FZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhFeUFOSUFsQkRFRUlJQU1nQmtzaUZSdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lKUVFGcUlRSWdDUzBBQVNFRElBa3RBQUJCL3dGSEJFQWdCQ0FDTmdJUVFRZ2hBaUFEUVFoMElBRnFJUUVNQVFzZ0EwR1BBVTBFUUNBRUlBSTJBaEFnQTBFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUJORklCTWdGUnNNQVFzZ0NTZ0NCQ0VUSUEwZ0NVRUlRUXdnQXlBR1N5SVZHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdsQkFXb2hBaUFKTFFBQklRWWdDUzBBQUVIL0FVY0VRQ0FFSUFJMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVF3QkN5QUdRWThCVFFSQUlBUWdBallDRUNBR1FRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUdJQk1nRTBVZ0ZSc0xJUU1nQnlBS0lBc2dBeUFIS0FJQUlnbEJIM1pHR3lBSmFqWUNBQ0FRUVlDQXdBQnlJUkFMSUJCQmdJR0FDSEZCZ0FGR0JFQWdCaUFQUVJCQkQwRU9JQkJCK0I1eEd5QVFRWUNBZ0FSeEcwRUNkR29pRFNnQ0FDSUpLQUlBSWdOcklRWUNmeUFESUFGQkVIWk5CRUFnQVNBRFFSQjBheUVCSUFaQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRVRJQTBnQ1VFTVFRZ2dBeUFHU3lJVkcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFNZ0NTMEFBRUgvQVVjRVFDQUVJQUkyQWhCQkNDRUNJQU5CQ0hRZ0FXb2hBUXdCQ3lBRFFZOEJUUVJBSUFRZ0FqWUNFQ0FEUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRTBVZ0V5QVZHd3dCQ3lBSktBSUVJUk1nRFNBSlFRaEJEQ0FESUFaTEloVWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQ1VFQmFpRUNJQWt0QUFFaEJpQUpMUUFBUWY4QlJ3UkFJQVFnQWpZQ0VFRUlJUUlnQmtFSWRDQUJhaUVCREFFTElBWkJqd0ZOQkVBZ0JDQUNOZ0lRSUFaQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRWWdFeUFUUlNBVkd3c2hBeUFISUE1cUlna2dDaUFMSUFNZ0NTZ0NBQ0lKUVI5MlJoc2dDV28yQWdBZ0VFR0FnSUFFY2lFUUN5QVFRWUNJZ01BQWNVR0FDRVlFUUNBR0lBOUJFRUVQUVE0Z0VFSEE5d0Z4R3lBUVFZQ0FnQ0J4RzBFQ2RHb2lEU2dDQUNJSktBSUFJZ05ySVFZQ2Z5QURJQUZCRUhaTkJFQWdBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFVElBMGdDVUVNUVFnZ0F5QUdTeUlWRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnbEJBV29oQWlBSkxRQUJJUU1nQ1MwQUFFSC9BVWNFUUNBRUlBSTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRd0JDeUFEUVk4QlRRUkFJQVFnQWpZQ0VDQURRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTElBSkJBV3NoQWlBQlFRRjBJUUVnQmtFQmRDSUdRWUNBQWtrTkFBc2dFMFVnRXlBVkd3d0JDeUFKS0FJRUlSTWdEU0FKUVFoQkRDQURJQVpMSWhVYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlDVUVCYWlFQ0lBa3RBQUVoQmlBSkxRQUFRZjhCUndSQUlBUWdBallDRUVFSUlRSWdCa0VJZENBQmFpRUJEQUVMSUFaQmp3Rk5CRUFnQkNBQ05nSVFJQVpCQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFZZ0V5QVRSU0FWR3dzaEF5QUhJQkpxSWdrZ0NpQUxJQU1nQ1NnQ0FDSUpRUjkyUmhzZ0NXbzJBZ0FnRUVHQWdJQWdjaUVRQ3lBRklCQkJnTUNBZ0FSeFFZREFBRVlFZnlBR0lBOUJFRUVQUVE0Z0VFR0F2QTl4R3lBUVFZQ0FnSUFDY1J0QkFuUnFJZzBvQWdBaUNTZ0NBQ0lEYXlFR0FuOGdBeUFCUVJCMlRRUkFJQUVnQTBFUWRHc2hBU0FHUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaEV5QU5JQWxCREVFSUlBTWdCa3NpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUpRUUZxSVFJZ0NTMEFBU0VESUFrdEFBQkIvd0ZIQkVBZ0JDQUNOZ0lRUVFnaEFpQURRUWgwSUFGcUlRRU1BUXNnQTBHUEFVMEVRQ0FFSUFJMkFoQWdBMEVKZENBQmFpRUJRUWNoQWd3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQk5GSUJNZ0ZSc01BUXNnQ1NnQ0JDRVRJQTBnQ1VFSVFRd2dBeUFHU3lJVkcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQUVJQUkyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFRZ0FqWUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lCTWdFMFVnRlJzTElRTWdCeUFVUVFKMGFpSUpJQW9nQ3lBRElBa29BZ0FpQ1VFZmRrWWJJQWxxTmdJQUlCQkJnSUNBZ0FKeUJTQVFDellDQUFzZ0JVRUVhaUVKSUFkQkJHb2hCeUFJUVFGcUlnZ2dERWNOQUFzZ0JVRU1haUVKSUFjZ0ZFRUNkR29oQnlBUlFRUnFJaEVnQkNnQ2dBRWlBMEY4Y1VrTkFBc01BUXRCQkNBRFFYeHhJZ2tnQ1VFRVRSdEJBV3NpQ1VGOGNVRUVhaUVSSUFnZ0NVRUJkRUY0Y1dwQkZHb2hDUXNnQkNBQ05nSUlJQVFnQmpZQ0JDQUVJQUUyQWdBZ0JDQU5OZ0pvSUF4RkRRRWdBeUFSVFEwQlFRQWhFMEVBSUF0cklSUWdBeUVCQTBBQ1FDQUJJQkZHQkVBZ0VTRUJEQUVMSUFrb0FnQWhBa0VBSVJBRFFFR1FnSUFCSUJCQkEyd2lDSFFnQW5GQkVDQUlkRVlFUUNBSElBd2dFR3hCQW5ScUlRVWdCQ0FQUVJCQkQwRU9JQUlnQ0hZaUFVSHZBM0ViSUFGQmdJREFBSEViUVFKMGFpSU5OZ0pvSUFRZ0JDZ0NCQ0FOS0FJQUlnSW9BZ0FpQVdzaUF6WUNCQUovSUFFZ0JDZ0NBQ0lHUVJCMlN3UkFJQUlvQWdRaENpQUVJQUUyQWdRZ0RTQUNRUWhCRENBQklBTkxJZzRiYWlnQ0FEWUNBQ0FFS0FJSUlRSURRQUpBSUFJTkFDQUVLQUlRSWdKQkFXb2hEU0FDTFFBQklRTWdBaTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQkNBTk5nSVFJQU5CQ1hRZ0Jtb2hCa0VISVFJTUFRc2dCQ0FOTmdJUVFRZ2hBaUFEUVFoMElBWnFJUVlMSUFRZ0FrRUJheUlDTmdJSUlBUWdCa0VCZENJR05nSUFJQVFnQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBS0lBcEZJQTRiREFFTElBUWdCaUFCUVJCMGF5SUdOZ0lBSUFOQmdJQUNjVVVFUUNBQ0tBSUVJUW9nRFNBQ1FReEJDQ0FCSUFOTElnNGJhaWdDQURZQ0FDQUVLQUlJSVFJRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaERTQUNMUUFCSVFFZ0FpMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FHUVlEK0Eyb2hCa0VJSVFJTUFnc2dCQ0FOTmdJUUlBRkJDWFFnQm1vaEJrRUhJUUlNQVFzZ0JDQU5OZ0lRUVFnaEFpQUJRUWgwSUFacUlRWUxJQVFnQWtFQmF5SUNOZ0lJSUFRZ0JrRUJkQ0lHTmdJQUlBUWdBMEVCZENJRE5nSUVJQU5CZ0lBQ1NRMEFDeUFLUlNBS0lBNGJEQUVMSUFJb0FnUUxJUUVnQlNBVUlBc2dBU0FGS0FJQUlnTkJIM1pHR3lBRGFqWUNBQ0FKSUFrb0FnQkJnSURBQUNBSWRISWlBallDQUNBRUtBS0FBU0VEQ3lBUVFRRnFJaEFnQXlJQklCRnJTUTBBQ3dzZ0NVRUVhaUVKSUFkQkJHb2hCeUFUUVFGcUloTWdERWNOQUFzTUFRdEJBQ0VSUVFBaEZ3SkFBa0FDUUFKQUlBUW9BbndpRkVIQUFFY05BQ0FFS0FLQUFVSEFBRWNOQUVFQVFRRWdHWFFpQVVFQmRpQUJjaUlVYXlFVElBUkI1QUJxSVFnZ0JFSGdBR29oRUNBRVFSeHFJUXNnQkNnQ2VFR01BbW9oQmlBRUtBSUlJUVVnQkNnQ0JDRUJJQVFvQWdBaEFpQUVLQUpvSVFrZ0JDZ0NkQ0VESUJaQkNIRU5BUU5BUVFBaERBTkFJQU1oRVFKQUFrQUNmd0pBQWtBZ0JpSU5LQUlBSWdaRkJFQWdBU0FRS0FJQUlnTW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FES0FJRUlRY2dFQ0FEUVFoQkRDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlBMEVCYWlFSklBTXRBQUVoQVNBRExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0J5QUhSU0FLR3d3QkN5QUNJQVpCRUhScklRSWdBVUdBZ0FKeFJRUkFJQU1vQWdRaEJ5QVFJQU5CREVFSUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWRGSUFjZ0Noc01BUXNnQXlnQ0JBdEZCRUFnRUNFSkRBWUxJQUVnQ0NnQ0FDSURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUhJQWdnQTBFSVFRd2dBU0FHU1NJS0cyb29BZ0FpQXpZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQ1VFQmFpRUZJQWt0QUFFaEFTQUpMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCeUFIUlNBS0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhCeUFJSUFOQkRFRUlJQUVnQmtraUNodHFLQUlBSWdNMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdsQkFXb2hCU0FKTFFBQklRWWdDUzBBQUVIL0FVWUVRQ0FHUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0IwVWdCeUFLR3d3QkN5QURLQUlFQ3lFS0lBRWdBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhCeUFJSUFOQkNFRU1JQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRa2dBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUhJQWRGSUE0YkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUhJQWdnQTBFTVFRZ2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QU9Hd3dCQ3lBREtBSUVDeUVEUVFBaEJpQUlJUWtDUUFKQUFrQUNmd0pBQWtBZ0F5QUtRUUYwY2c0RUFBRURCUW9MSUFFZ0N5QU5LQUlFUVJGMlFRUnhJQTFCQkdzaUJ5Z0NBRUVUZGtFQmNYSWlEa0hRdVFGcUxRQUFRUUowYWlJSktBSUFJZ01vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUW9nQ1NBRFFRaEJEQ0FCSUFaSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUpJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDaUFLUlNBU0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhDaUFKSUFOQkRFRUlJQUVnQmtraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dFaHNNQVFzZ0F5Z0NCQXNoQXlBUklCTWdGQ0FESUE1QjBMc0JhaTBBQUhNaUF4czJBZ0FnQnlBSEtBSUFRU0J5TmdJQUlBMGdEU2dDQkVFSWNqWUNCQ0FOUVl3Q2F5SUdJQVlvQWdCQmdJQUljallDQUNBTlFZUUNheUlHSUFZb0FnQkJnSUFDY2pZQ0FDQU5RWWdDYXlJR0lBWW9BZ0FnQTBFZmRISkJnSUFFY2pZQ0FDQURRUk4wSVZjZ0FTQUxJQVFvQW13dEFBSkJBblJxSWdjb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhDU0FISUFOQkNFRU1JQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRY2dBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQnpZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCellDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUE0YkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUpJQWNnQTBFTVFRZ2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaEJ5QUdMUUFCSVFNZ0JpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FITmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUhOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQU9Hd3dCQ3lBREtBSUVDeUVESUZkQkVISWlCaUFEUlEwQkdnc2dBU0FMSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlKS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkIwTGtCYWkwQUFFRUNkR29pQ2lnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQW9nQjBFSVFRd2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnQ2hzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDaUFIUVF4QkNDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lBb2JEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWRDN0FXb3RBQUJ6SWdNYk5nS0FBaUFKSUFrb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRFFSWjBja0dBQVhJTElRWWdBU0FMSUFRb0Ftd2dCa0VHZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQ2lBS1JTQU9Hd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Ewa2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nRGhzTUFRc2dCeWdDQkF0RkRRRUxJQUVnQ3lBTktBSUVRUmQyUVFSeElBMUJCR3NpQ1NnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUFaQkJuWkJxZ0Z4Y25KeWNpSVNRZEM1QVdvdEFBQkJBblJxSWdvb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFLSUFkQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUFvYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQW9nQjBFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQUtHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIUXV3RnFMUUFBY3lJREd6WUNnQVFnQ1NBSktBSUFRWUFRY2pZQ0FDQU5JQTBvQWdSQmdBUnlOZ0lFSUFZZ0EwRVpkSEpCZ0FoeUlRWUxJQUVnQ3lBRUtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdEaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUE0YkRBRUxJQWNvQWdRTFJRMEZDeUFCSUFzZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWc0b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDa0hRdVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBU0FESUFKQkVIWkxCRUFnQnlnQ0JDRVNJQWtnQjBFSVFRd2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklCSWdFa1VnRlJzTUJBc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NRMEJJQWNvQWdRaEVpQUpJQWRCREVFSUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0ZSc01Bd3NDUUNBR1FaQ0FnQUZ4RFFBZ0FTQUxJQVFvQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NpQUtSU0FPR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQnlnQ0JBdEZEUUFnQVNBTElBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJS0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkIwTGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQWtnQjBFSVFRd2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnRlJzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDU0FIUVF4QkNDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lCVWJEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWRDN0FXb3RBQUJ6SWdNYk5nSUFJQW9nQ2lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdEVUdNQW1zaUJ5QUhLQUlBUVlDQUNISTJBZ0FnRFVHRUFtc2lCeUFIS0FJQVFZQ0FBbkkyQWdBZ0RVR0lBbXNpQnlBSEtBSUFJQU5CSDNSeVFZQ0FCSEkyQWdBZ0JpQURRUk4wY2tFUWNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBQklBc2dCQ2dDYkNBR1FRTjJJZzVCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBRFNTSVNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQW9nQ2tVZ0Voc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUW9nQ1NBSFFReEJDQ0FCSUFOSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkliREFFTElBY29BZ1FMUlEwQUlBRWdDeUFOS0FJRVFSUjJRUVJ4SUExQkJHc2lDaWdDQUVFV2RrRUJjU0FHUVE5MlFSQnhJQVpCRTNaQndBQnhJQTVCcWdGeGNuSnljaUlTUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoRGlBSklBZEJDRUVNSUFFZ0Ewa2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FPSUE1RklCVWJEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VPSUFrZ0IwRU1RUWdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RrVWdEaUFWR3d3QkN5QUhLQUlFQ3lFRElCRWdFeUFVSUFNZ0VrSFF1d0ZxTFFBQWN5SURHellDZ0FJZ0NpQUtLQUlBUVlBQ2NqWUNBQ0FOSUEwb0FnUkJ3QUJ5TmdJRUlBWWdBMEVXZEhKQmdBRnlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUJJQXNnQkNnQ2JDQUdRUVoySWc1Qjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdFaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJJYkRBRUxJQWNvQWdRTFJRMEFJQUVnQ3lBTktBSUVRUmQyUVFSeElBMUJCR3NpQ2lnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUE1QnFnRnhjbkp5Y2lJU1FkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaERpQUpJQWRCQ0VFTUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBT0lBNUZJQlViREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFT0lBa2dCMEVNUVFnZ0FTQURTU0lWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEa1VnRGlBVkd3d0JDeUFIS0FJRUN5RURJQkVnRXlBVUlBTWdFa0hRdXdGcUxRQUFjeUlER3pZQ2dBUWdDaUFLS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQTBFWmRISkJnQWh5SVFZTElBWkJnTUNBZ0FSeERRTWdBU0FMSUFRb0Ftd2dCa0VKZGlJU1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUFTZ0NBQ0lEYXlFSEFuOGdBeUFDUVJCMlN3UkFJQUVvQWdRaENpQUpJQUZCQ0VFTUlBTWdCMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQnlBS0lBcEZJQTRiREFFTElBSWdBMEVRZEdzaEFpQUhRWUNBQW5GRkJFQWdBU2dDQkNFS0lBa2dBVUVNUVFnZ0F5QUhTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnTkJBV29oQlNBRExRQUJJUUVnQXkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQjBFQmRDSUhRWUNBQWtrTkFBc2dDa1VnQ2lBT0d3d0JDeUFCS0FJRUMwVUVRQ0FISVFFTUJBc2dCeUFMSUEwb0FnUkJHblpCQkhFZ0RVRUVheUlPS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnRWtHcUFYRnljbkp5SWdwQjBMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ0ZySVFNZ0FTQUNRUkIyU3dSQUlBY29BZ1FoRWlBSklBZEJDRUVNSUFFZ0Ewc2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElCSWdFa1VnRlJzTUF3c2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVU5BU0FESVFFTElBY29BZ1FNQVFzZ0J5Z0NCQ0VTSUFrZ0IwRU1RUWdnQVNBRFN5SVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQkpGSUJJZ0ZSc0xJUU1nRVNBVElCUWdBeUFLUWRDN0FXb3RBQUJ6SWdNYk5nS0FCaUFPSUE0b0FnQkJnSUFCY2pZQ0FDQU5JQTBvQWdSQmdDQnlOZ0lFSUEwZ0RTZ0NoQUpCQkhJMkFvUUNJQTBnRFNnQ2pBSkJBWEkyQW93Q0lBMGdEU2dDaUFJZ0EwRVNkSEpCQW5JMkFvZ0NJQVlnQTBFY2RISkJnTUFBY2lFR0N5QU5JQVpCLy8vL3RudHhOZ0lBQ3lBTlFRUnFJUVlnRVVFRWFpRURJQXhCQVdvaURFSEFBRWNOQUFzZ0RVRU1haUVHSUJGQmhBWnFJUU1nRjBFOFNTRllJQmRCQkdvaEZ5QllEUUFMREFJTFFRRWdHWFFpQVVFQmRpQUJjaUVPSUFRb0FuZ2lCeUFVUVFKMGFrRU1haUVESUFRb0FvQUJJUVlnQkNnQ0NDRUZJQVFvQWdRaEFTQUVLQUlBSVFJZ0JDZ0NhQ0VKSUFRb0FuUWhDd0pBQWtBZ0ZrRUljUVJBSUFaQkJFa05BaUFVUlEwQklBUkI1QUJxSVJBZ0JFSGdBR29oRFNBVVFRTnNJUnNnRkVFQmRDRWtRUUFnRG1zaEZTQUVRUnhxSVJJRFFFRUFJUmdEUUFKQUFrQUNmd0pBSUFNaUNDZ0NBQ0lEQkVBQ1FDQURRWkNBZ0FGeERRQWdBU0FTSUFRb0Ftd2dBMEh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXdnQ1NBSFFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQW9iREFFTElBY29BZ1FoRENBSklBZEJDRUVNSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FNSUF4RklBb2JDMFVOQUNBQklCSWdDQ2dDQkVFUmRrRUVjU0FJUVFScklnd29BZ0JCRTNaQkFYRWdBMEVPZGtFUWNTQURRUkIyUWNBQWNTQURRYW9CY1hKeWNuSWlFMEhRdVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUW9nQ1NBSFFReEJDQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQndiREFFTElBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FLSUFwRklCd2JDeUVHSUFzZ0ZTQU9JQVlnRTBIUXV3RnFMUUFBY3lJR0d6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NDQUlLQUlFUVFoeU5nSUVJQU1nQmtFVGRISkJFSEloQXdzQ1FDQURRWUNCZ0FoeERRQWdBU0FTSUFRb0Ftd2dBMEVEZGlJS1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaERDQUpJQWRCREVFSUlBRWdCa2tpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0V4c01BUXNnQnlnQ0JDRU1JQWtnQjBFSVFRd2dBU0FHU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBd2dERVVnRXhzTFJRMEFJQUVnRWlBSUtBSUVRUlIyUVFSeElBaEJCR3NpRENnQ0FFRVdka0VCY1NBRFFROTJRUkJ4SUFOQkUzWkJ3QUJ4SUFwQnFnRnhjbkp5Y2lJVFFkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0hCc01BUXNnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnSEJzTElRWWdDeUFVUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnWWJOZ0lBSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDQ0FJS0FJRVFjQUFjallDQkNBRElBWkJGblJ5UVlBQmNpRURDd0pBSUFOQmdJaUF3QUJ4RFFBZ0FTQVNJQVFvQW13Z0EwRUdkaUlLUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoRENBSklBZEJERUVJSUFFZ0Jra2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dCeWdDQkNFTUlBa2dCMEVJUVF3Z0FTQUdTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUF3Z0RFVWdFeHNMUlEwQUlBRWdFaUFJS0FJRVFSZDJRUVJ4SUFoQkJHc2lEQ2dDQUVFWmRrRUJjU0FEUVJKMlFSQnhJQU5CRm5aQndBQnhJQXBCcWdGeGNuSnljaUlUUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nSEJzTUFRc2dCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdIQnNMSVFZZ0N5QWtRUUowYWlBVklBNGdCaUFUUWRDN0FXb3RBQUJ6SWdZYk5nSUFJQXdnRENnQ0FFR0FFSEkyQWdBZ0NDQUlLQUlFUVlBRWNqWUNCQ0FESUFaQkdYUnlRWUFJY2lFREN5QURRWURBZ0lBRWNRMERJQUVnRWlBRUtBSnNJQU5CQ1hZaUNrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnRW9BZ0FpQm1zaEJ3Si9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQjBHQWdBSnhCRUFnQVNnQ0JBd0NDeUFCS0FJRUlRd2dDU0FCUVF4QkNDQUdJQWRMSWhNYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFRklBWXRBQUVoQVNBR0xRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBSFFRRjBJZ2RCZ0lBQ1NRMEFDeUFNUlNBTUlCTWJEQUVMSUFFb0FnUWhEQ0FKSUFGQkNFRU1JQVlnQjBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEJ5QU1JQXhGSUJNYkMwVUVRQ0FISVFFTUJBc2dCeUFTSUFnb0FnUkJHblpCQkhFZ0NFRUVheUlNS0FJQVFSeDJRUUZ4SUFOQkZYWkJFSEVnQTBFWmRrSEFBSEVnQ2tHcUFYRnljbkp5SWhOQjBMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ0ZySVFZZ0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQUdRWUNBQW5FRVFDQUdJUUVNQXdzZ0NpZ0NCQ0VISUFrZ0NrRU1RUWdnQVNBR1N5SWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdWQkFXb2hDaUFGTFFBQklRRWdCUzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWRGSUFjZ0hCc01Bd3NnQ2lnQ0JDRUhJQWtnQ2tFSVFRd2dBU0FHU3lJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1ZCQVdvaENpQUZMUUFCSVFZZ0JTMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQnlBSFJTQWNHd3dDQ3lBQklBMG9BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBTklBWkJERUVJSUFFZ0Ewa2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnREJzTUFRc2dCaWdDQkNFSElBMGdCa0VJUVF3Z0FTQURTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFjZ0IwVWdEQnNMUlFSQUlBMGhDUXdFQ3lBQklCQW9BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBUUlBWkJERUVJSUFFZ0Ewa2lEQnRxS0FJQUlnWTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnbEJBV29oQlNBSkxRQUJJUU1nQ1MwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBTUd3d0JDeUFHS0FJRUlRY2dFQ0FHUVFoQkRDQUJJQU5KSWd3YmFpZ0NBQ0lHTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lKUVFGcUlRVWdDUzBBQVNFQklBa3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUhJQWRGSUF3YkN5RU1JQUVnQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBUUlBWkJERUVJSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnQ2hzTUFRc2dCaWdDQkNFSElCQWdCa0VJUVF3Z0FTQURTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFjZ0IwVWdDaHNMSVFaQkFDRURJQkFoQ1FKQUFrQUNRQUovQWtBQ1FDQUdJQXhCQVhSeURnUUFBUU1GQ0FzZ0FTQVNJQWdvQWdSQkVYWkJCSEVnQ0VFRWF5SUhLQUlBUVJOMlFRRnhjaUlLUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoRENBSklBWkJERUVJSUFFZ0Ewa2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dCaWdDQkNFTUlBa2dCa0VJUVF3Z0FTQURTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUF3Z0RFVWdFeHNMSVFNZ0N5QVZJQTRnQXlBS1FkQzdBV290QUFCeklnTWJOZ0lBSUFjZ0J5Z0NBRUVnY2pZQ0FDQUlJQWdvQWdSQkNISTJBZ1FnQTBFVGRDRlpJQUVnRWlBRUtBSnNMUUFDUVFKMGFpSUhLQUlBSWdZb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGswRVFDQUNJQU5CRUhScklRSWdBVUdBZ0FKeEJFQWdCaWdDQkF3Q0N5QUdLQUlFSVFrZ0J5QUdRUXhCQ0NBQklBTkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVISUFZdEFBRWhBeUFHTFFBQVFmOEJSd1JBSUFRZ0J6WUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FITmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUpSU0FKSUFvYkRBRUxJQVlvQWdRaENTQUhJQVpCQ0VFTUlBRWdBMGtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFjZ0JpMEFBU0VCSUFZdEFBQkIvd0ZIQkVBZ0JDQUhOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFjMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBSklBbEZJQW9iQ3lFR0lGbEJFSElpQXlBR1JRMEJHZ3NnQVNBU0lBZ29BZ1JCRkhaQkJIRWdDRUVFYXlJSktBSUFRUloyUVFGeElBTkJEM1pCRUhFZ0EwRVRka0hBQUhFZ0EwRURka0dxQVhGeWNuSnlJaE5CMExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VLSUF3Z0IwRU1RUWdnQVNBR1NTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFNR3d3QkN5QUhLQUlFSVFvZ0RDQUhRUWhCRENBQklBWkpJZ3diYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQU1Hd3NoQmlBTElCUkJBblJxSUJVZ0RpQUdJQk5CMExzQmFpMEFBSE1pQmhzMkFnQWdDU0FKS0FJQVFZQUNjallDQUNBSUlBZ29BZ1JCd0FCeU5nSUVJQU1nQmtFV2RISkJnQUZ5Q3lFRElBRWdFaUFFS0FKc0lBTkJCblpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VNSUFrZ0IwRU1RUWdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hDU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdDVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FLR3d3QkN5QUhLQUlFSVF3Z0NTQUhRUWhCRENBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnRENBTVJTQUtHd3RGRFFFTElBRWdFaUFJS0FJRVFSZDJRUVJ4SUFoQkJHc2lDU2dDQUVFWmRrRUJjU0FEUVJKMlFSQnhJQU5CRm5aQndBQnhJQU5CQm5aQnFnRnhjbkp5Y2lJVFFkQzVBV290QUFCQkFuUnFJZ3dvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaENpQU1JQWRCREVFSUlBRWdCa2tpREJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0RCc01BUXNnQnlnQ0JDRUtJQXdnQjBFSVFRd2dBU0FHU1NJTUcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnREJzTElRWWdDeUFrUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnWWJOZ0lBSUFrZ0NTZ0NBRUdBRUhJMkFnQWdDQ0FJS0FJRVFZQUVjallDQkNBRElBWkJHWFJ5UVlBSWNpRURDeUFCSUJJZ0JDZ0NiQ0FEUVFsMlFlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaERDQUpJQWRCREVFSUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0Noc01BUXNnQnlnQ0JDRU1JQWtnQjBFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBd2dERVVnQ2hzTFJRMERDeUFCSUJJZ0NDZ0NCRUVhZGtFRWNTQUlRUVJySWd3b0FnQkJISFpCQVhFZ0EwRVZka0VRY1NBRFFSbDJRY0FBY1NBRFFRbDJRYW9CY1hKeWNuSWlFMEhRdVFGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJtc2hBU0FHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUTBCSUFvb0FnUWhCeUFKSUFwQkRFRUlJQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lGUVFGcUlRb2dCUzBBQVNFR0lBVXRBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dIQnNNQWdzZ0NpZ0NCQ0VISUFrZ0NrRUlRUXdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdWQkFXb2hDaUFGTFFBQklRRWdCUzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWNnQjBVZ0hCc01BUXNnQ2lnQ0JBc2hCaUFMSUJ0QkFuUnFJQlVnRGlBR0lCTkIwTHNCYWkwQUFITWlCeHMyQWdBZ0RDQU1LQUlBUVlDQUFYSTJBZ0FnQ0NBSUtBSUVRWUFnY2pZQ0JDQUVLQUo4UVFKMElBaHFJZ1lnQmlnQ0JFRUVjallDQkNBR0lBWW9BZ3hCQVhJMkFnd2dCaUFHS0FJSUlBZEJFblJ5UVFKeU5nSUlJQU1nQjBFY2RISkJnTUFBY2lFREN5QUlJQU5CLy8vL3RudHhOZ0lBQ3lBSVFRUnFJUU1nQzBFRWFpRUxJQmhCQVdvaUdDQVVSdzBBQ3lBSVFReHFJUU1nQ3lBYlFRSjBhaUVMSUJGQkJHb2lFU0FFS0FLQUFTSUdRWHh4U1EwQUN3d0NDd0pBSUFaQkJFa05BQ0FVQkVBZ0JFSGtBR29oRUNBRVFlQUFhaUVOSUJSQkEyd2hHeUFVUVFGMElTUkJBQ0FPYXlFVklBUkJIR29oRWdOQVFRQWhHQU5BQWtBQ1FBSi9Ba0FnQXlJSUtBSUFJZ01FUUFKQUlBTkJrSUNBQVhFTkFDQUJJQklnQkNnQ2JDQURRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dDaHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0Noc0xSUTBBSUFFZ0VpQUlLQUlFUVJGMlFRUnhJQWhCQkdzaURDZ0NBRUVUZGtFQmNTQURRUTUyUVJCeElBTkJFSFpCd0FCeElBTkJxZ0Z4Y25KeWNpSVRRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dIQnNNQVFzZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0hCc0xJUVlnQ3lBVklBNGdCaUFUUWRDN0FXb3RBQUJ6SWdjYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSUlBZ29BZ1JCQ0hJMkFnUWdDRUYrSUFRb0FueHJRUUowYWlJR0lBWW9BZ1JCZ0lBQ2NqWUNCQ0FHSUFZb0FnQWdCMEVmZEhKQmdJQUVjallDQUNBR1FRUnJJZ1lnQmlnQ0FFR0FnQWh5TmdJQUlBTWdCMEVUZEhKQkVISWhBd3NDUUNBRFFZQ0JnQWh4RFFBZ0FTQVNJQVFvQW13Z0EwRURkaUlLUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoRENBSklBZEJERUVJSUFFZ0Jra2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dCeWdDQkNFTUlBa2dCMEVJUVF3Z0FTQUdTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUF3Z0RFVWdFeHNMUlEwQUlBRWdFaUFJS0FJRVFSUjJRUVJ4SUFoQkJHc2lEQ2dDQUVFV2RrRUJjU0FEUVE5MlFSQnhJQU5CRTNaQndBQnhJQXBCcWdGeGNuSnljaUlUUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nSEJzTUFRc2dCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdIQnNMSVFZZ0N5QVVRUUowYWlBVklBNGdCaUFUUWRDN0FXb3RBQUJ6SWdZYk5nSUFJQXdnRENnQ0FFR0FBbkkyQWdBZ0NDQUlLQUlFUWNBQWNqWUNCQ0FESUFaQkZuUnlRWUFCY2lFREN3SkFJQU5CZ0lpQXdBQnhEUUFnQVNBU0lBUW9BbXdnQTBFR2RpSUtRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dFeHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0V4c0xSUTBBSUFFZ0VpQUlLQUlFUVJkMlFRUnhJQWhCQkdzaURDZ0NBRUVaZGtFQmNTQURRUkoyUVJCeElBTkJGblpCd0FCeElBcEJxZ0Z4Y25KeWNpSVRRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dIQnNNQVFzZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0hCc0xJUVlnQ3lBa1FRSjBhaUFWSUE0Z0JpQVRRZEM3QVdvdEFBQnpJZ1liTmdJQUlBd2dEQ2dDQUVHQUVISTJBZ0FnQ0NBSUtBSUVRWUFFY2pZQ0JDQURJQVpCR1hSeVFZQUljaUVEQ3lBRFFZREFnSUFFY1EwRElBRWdFaUFFS0FKc0lBTkJDWFlpQ2tIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdFb0FnQWlCbXNoQndKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdCMEdBZ0FKeEJFQWdBU2dDQkF3Q0N5QUJLQUlFSVF3Z0NTQUJRUXhCQ0NBR0lBZExJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVGSUFZdEFBRWhBU0FHTFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFIUVFGMElnZEJnSUFDU1EwQUN5QU1SU0FNSUJNYkRBRUxJQUVvQWdRaERDQUpJQUZCQ0VFTUlBWWdCMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQnlBTUlBeEZJQk1iQzBVRVFDQUhJUUVNQkFzZ0J5QVNJQWdvQWdSQkduWkJCSEVnQ0VFRWF5SU1LQUlBUVJ4MlFRRnhJQU5CRlhaQkVIRWdBMEVaZGtIQUFIRWdDa0dxQVhGeWNuSnlJaE5CMExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnRnJJUVlnQVNBQ1FSQjJUUVJBSUFJZ0FVRVFkR3NoQWlBR1FZQ0FBbkVFUUNBR0lRRU1Bd3NnQ2lnQ0JDRUhJQWtnQ2tFTVFRZ2dBU0FHU3lJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1ZCQVdvaENpQUZMUUFCSVFFZ0JTMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBZEZJQWNnSEJzTUF3c2dDaWdDQkNFSElBa2dDa0VJUVF3Z0FTQUdTeUljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnVkJBV29oQ2lBRkxRQUJJUVlnQlMwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCeUFIUlNBY0d3d0NDeUFCSUEwb0FnQWlCaWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJUUVJBSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhCeUFOSUFaQkRFRUlJQUVnQTBraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGSEJFQWdCQ0FKTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dEQnNNQVFzZ0JpZ0NCQ0VISUEwZ0JrRUlRUXdnQVNBRFNTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQWNnQjBVZ0RCc0xSUVJBSUEwaENRd0VDeUFCSUJBb0FnQWlCaWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJUUVJBSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhCeUFRSUFaQkRFRUlJQUVnQTBraURCdHFLQUlBSWdZMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdsQkFXb2hCU0FKTFFBQklRTWdDUzBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0IwVWdCeUFNR3d3QkN5QUdLQUlFSVFjZ0VDQUdRUWhCRENBQklBTkpJZ3diYWlnQ0FDSUdOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUpRUUZxSVFVZ0NTMEFBU0VCSUFrdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBSElBZEZJQXdiQ3lFTUlBRWdCaWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJUUVJBSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhCeUFRSUFaQkRFRUlJQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGSEJFQWdCQ0FKTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dDaHNNQVFzZ0JpZ0NCQ0VISUJBZ0JrRUlRUXdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQWNnQjBVZ0Noc0xJUVpCQUNFRElCQWhDUUpBQWtBQ1FBSi9Ba0FDUUNBR0lBeEJBWFJ5RGdRQUFRTUZDQXNnQVNBU0lBZ29BZ1JCRVhaQkJIRWdDRUVFYXlJSEtBSUFRUk4yUVFGeGNpSUtRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCaWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJUUVJBSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhEQ0FKSUFaQkRFRUlJQUVnQTBraUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGSEJFQWdCQ0FKTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dFeHNNQVFzZ0JpZ0NCQ0VNSUFrZ0JrRUlRUXdnQVNBRFNTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQXdnREVVZ0V4c0xJUU1nQ3lBVklBNGdBeUFLUWRDN0FXb3RBQUJ6SWdZYk5nSUFJQWNnQnlnQ0FFRWdjallDQUNBSUlBZ29BZ1JCQ0hJMkFnUWdDRUYrSUFRb0FueHJRUUowYWlJRElBTW9BZ1JCZ0lBQ2NqWUNCQ0FESUFNb0FnQWdCa0VmZEhKQmdJQUVjallDQUNBRFFRUnJJZ01nQXlnQ0FFR0FnQWh5TmdJQUlBWkJFM1FoV2lBQklCSWdCQ2dDYkMwQUFrRUNkR29pQnlnQ0FDSUdLQUlBSWdOcklRRUNmeUFESUFKQkVIWk5CRUFnQWlBRFFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWNnQmtFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaEJ5QUdMUUFCSVFNZ0JpMEFBRUgvQVVjRVFDQUVJQWMyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0J6WUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUtHd3dCQ3lBR0tBSUVJUWtnQnlBR1FRaEJEQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUhJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQVFnQnpZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUhOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdDU0FKUlNBS0d3c2hCaUJhUVJCeUlnTWdCa1VOQVJvTElBRWdFaUFJS0FJRVFSUjJRUVJ4SUFoQkJHc2lDU2dDQUVFV2RrRUJjU0FEUVE5MlFSQnhJQU5CRTNaQndBQnhJQU5CQTNaQnFnRnhjbkp5Y2lJVFFkQzVBV290QUFCQkFuUnFJZ3dvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaENpQU1JQWRCREVFSUlBRWdCa2tpREJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0RCc01BUXNnQnlnQ0JDRUtJQXdnQjBFSVFRd2dBU0FHU1NJTUcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnREJzTElRWWdDeUFVUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnWWJOZ0lBSUFrZ0NTZ0NBRUdBQW5JMkFnQWdDQ0FJS0FJRVFjQUFjallDQkNBRElBWkJGblJ5UVlBQmNnc2hBeUFCSUJJZ0JDZ0NiQ0FEUVFaMlFlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaERDQUpJQWRCREVFSUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFrZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFrMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0Noc01BUXNnQnlnQ0JDRU1JQWtnQjBFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaENTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBd2dERVVnQ2hzTFJRMEJDeUFCSUJJZ0NDZ0NCRUVYZGtFRWNTQUlRUVJySWdrb0FnQkJHWFpCQVhFZ0EwRVNka0VRY1NBRFFSWjJRY0FBY1NBRFFRWjJRYW9CY1hKeWNuSWlFMEhRdVFGcUxRQUFRUUowYWlJTUtBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUW9nRENBSFFReEJDQ0FCSUFaSklnd2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQXdiREFFTElBY29BZ1FoQ2lBTUlBZEJDRUVNSUFFZ0Jra2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FLSUFwRklBd2JDeUVHSUFzZ0pFRUNkR29nRlNBT0lBWWdFMEhRdXdGcUxRQUFjeUlHR3pZQ0FDQUpJQWtvQWdCQmdCQnlOZ0lBSUFnZ0NDZ0NCRUdBQkhJMkFnUWdBeUFHUVJsMGNrR0FDSEloQXdzZ0FTQVNJQVFvQW13Z0EwRUpka0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXdnQ1NBSFFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQW9iREFFTElBY29BZ1FoRENBSklBZEJDRUVNSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FNSUF4RklBb2JDMFVOQXdzZ0FTQVNJQWdvQWdSQkduWkJCSEVnQ0VFRWF5SU1LQUlBUVJ4MlFRRnhJQU5CRlhaQkVIRWdBMEVaZGtIQUFIRWdBMEVKZGtHcUFYRnljbkp5SWhOQjBMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFZ0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FTkFTQUtLQUlFSVFjZ0NTQUtRUXhCQ0NBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJVRUJhaUVLSUFVdEFBRWhCaUFGTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhSU0FISUJ3YkRBSUxJQW9vQWdRaEJ5QUpJQXBCQ0VFTUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUZRUUZxSVFvZ0JTMEFBU0VCSUFVdEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSElBZEZJQndiREFFTElBb29BZ1FMSVFZZ0N5QWJRUUowYWlBVklBNGdCaUFUUWRDN0FXb3RBQUJ6SWdjYk5nSUFJQXdnRENnQ0FFR0FnQUZ5TmdJQUlBZ2dDQ2dDQkVHQUlISTJBZ1FnQkNnQ2ZFRUNkQ0FJYWlJR0lBWW9BZ1JCQkhJMkFnUWdCaUFHS0FJTVFRRnlOZ0lNSUFZZ0JpZ0NDQ0FIUVJKMGNrRUNjallDQ0NBRElBZEJISFJ5UVlEQUFISWhBd3NnQ0NBRFFmLy8vN1o3Y1RZQ0FBc2dDRUVFYWlFRElBdEJCR29oQ3lBWVFRRnFJaGdnRkVjTkFBc2dDRUVNYWlFRElBc2dHMEVDZEdvaEN5QVJRUVJxSWhFZ0JDZ0NnQUVpQmtGOGNVa05BQXNNQVF0QkJDQUdRWHh4SWdNZ0EwRUVUUnRCQVdzaUEwRjhjVUVFYWlFUklBY2dBMEVCZEVGNGNXcEJGR29oQXdzZ0JDQUZOZ0lJSUFRZ0FUWUNCQ0FFSUFJMkFnQWdCQ0FKTmdKb0lCUkZEUVFnQmlBUlRRMEVBMEJCQUNFRklCRWdCQ2dDZ0FGSEJFQURRQ0FFSUFNZ0N5QUZJQlJzUVFKMGFpQU9JQVZCQUJCWUlBVkJBV29pQlNBRUtBS0FBU0FSYTBrTkFBc0xJQU1nQXlnQ0FFSC8vLysyZTNFMkFnQWdDMEVFYWlFTElBTkJCR29oQXlBWFFRRnFJaGNnRkVjTkFBc01CQXRCQkNBR1FYeHhJZ01nQTBFRVRSdEJBV3NpQTBGOGNVRUVhaUVSSUFjZ0EwRUJkRUY0Y1dwQkZHb2hBd3NnQkNBRk5nSUlJQVFnQVRZQ0JDQUVJQUkyQWdBZ0JDQUpOZ0pvSUJSRkRRSWdCaUFSVFEwQ0EwQkJBQ0VGSUJFZ0JDZ0NnQUZIQkVBRFFDQUVJQU1nQ3lBRklCUnNRUUowYWlBT0lBVkJBUkJZSUFWQkFXb2lCU0FFS0FLQUFTQVJhMGtOQUFzTElBTWdBeWdDQUVILy8vKzJlM0UyQWdBZ0MwRUVhaUVMSUFOQkJHb2hBeUFYUVFGcUloY2dGRWNOQUFzTUFnc0RRRUVBSVF3RFFDQURJUkVDUUFKQUFuOENRQUpBSUFZaURTZ0NBQ0lHUlFSQUlBRWdFQ2dDQUNJREtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdBeWdDQkNFSElCQWdBMEVJUVF3Z0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnTkJBV29oQ1NBRExRQUJJUUVnQXkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFjZ0IwVWdDaHNNQVFzZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQURLQUlFSVFjZ0VDQURRUXhCQ0NBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBeUFHTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhSU0FISUFvYkRBRUxJQU1vQWdRTFJRUkFJQkFoQ1F3R0N5QUJJQWdvQWdBaUF5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQU1vQWdRaEJ5QUlJQU5CQ0VFTUlBRWdCa2tpQ2h0cUtBSUFJZ00yQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2xCQVdvaEJTQUpMUUFCSVFFZ0NTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBY2dCMFVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRY2dDQ0FEUVF4QkNDQUJJQVpKSWdvYmFpZ0NBQ0lETmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lKUVFGcUlRVWdDUzBBQVNFR0lBa3RBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dDaHNNQVFzZ0F5Z0NCQXNoQ2lBQklBTW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FES0FJRUlRY2dDQ0FEUVFoQkRDQUJJQVpKSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlBMEVCYWlFSklBTXRBQUVoQVNBRExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0J5QUhSU0FPR3d3QkN5QUNJQVpCRUhScklRSWdBVUdBZ0FKeFJRUkFJQU1vQWdRaEJ5QUlJQU5CREVFSUlBRWdCa2tpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWRGSUFjZ0Roc01BUXNnQXlnQ0JBc2hBMEVBSVFZZ0NDRUpBa0FDUUFKQUFuOENRQUpBSUFNZ0NrRUJkSElPQkFBQkF3VUtDeUFCSUFzZ0RTZ0NCRUVSZGtFRWNTQU5RUVJySWdjb0FnQkJFM1pCQVhGeUlnNUIwTGtCYWkwQUFFRUNkR29pQ1NnQ0FDSURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUtJQWtnQTBFSVFRd2dBU0FHU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaENTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnRWhzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRb2dDU0FEUVF4QkNDQUJJQVpKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSklBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lCSWJEQUVMSUFNb0FnUUxJUU1nRVNBVElCUWdBeUFPUWRDN0FXb3RBQUJ6SWdNYk5nSUFJQWNnQnlnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdBMEVUZENGYklBRWdDeUFFS0FKc0xRQUNRUUowYWlJSEtBSUFJZ01vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUWtnQnlBRFFRaEJEQ0FCSUFaSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUhJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFjMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWMyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBT0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhDU0FISUFOQkRFRUlJQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQnpZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCellDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dEaHNNQVFzZ0F5Z0NCQXNoQXlCYlFSQnlJZ1lnQTBVTkFSb0xJQUVnQ3lBTktBSUVRUlIyUVFSeElBMUJCR3NpQ1NnQ0FFRVdka0VCY1NBR1FROTJRUkJ4SUFaQkUzWkJ3QUJ4SUFaQkEzWkJxZ0Z4Y25KeWNpSVNRZEM1QVdvdEFBQkJBblJxSWdvb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFLSUFkQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUFvYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQW9nQjBFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQUtHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIUXV3RnFMUUFBY3lJREd6WUNnQUlnQ1NBSktBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0EwRVdkSEpCZ0FGeUN5RUdJQUVnQ3lBRUtBSnNJQVpCQm5aQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdEaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUE0YkRBRUxJQWNvQWdRTFJRMEJDeUFCSUFzZ0RTZ0NCRUVYZGtFRWNTQU5RUVJySWdrb0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBR1FRWjJRYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJS0tBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ2lBSFFRaEJEQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBS0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFLSUFkQkRFRUlJQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdDaHNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjBMc0JhaTBBQUhNaUF4czJBb0FFSUFrZ0NTZ0NBRUdBRUhJMkFnQWdEU0FOS0FJRVFZQUVjallDQkNBR0lBTkJHWFJ5UVlBSWNpRUdDeUFCSUFzZ0JDZ0NiQ0FHUVFsMlFlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQTRiREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBT0d3d0JDeUFIS0FJRUMwVU5CUXNnQVNBTElBMG9BZ1JCR25aQkJIRWdEVUVFYXlJT0tBSUFRUngyUVFGeElBWkJGWFpCRUhFZ0JrRVpka0hBQUhFZ0JrRUpka0dxQVhGeWNuSnlJZ3BCMExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVnQXlBQ1FSQjJTd1JBSUFjb0FnUWhFaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQVNJQkpGSUJVYkRBUUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRU5BU0FIS0FJRUlSSWdDU0FIUVF4QkNDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFTUlNBU0lCVWJEQU1MQWtBZ0JrR1FnSUFCY1EwQUlBRWdDeUFFS0FKc0lBWkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRGhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBNGJEQUVMSUFjb0FnUUxSUTBBSUFFZ0N5QU5LQUlFUVJGMlFRUnhJQTFCQkdzaUNpZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSVNRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUJVYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQWtnQjBFTVFRZ2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQVZHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIUXV3RnFMUUFBY3lJREd6WUNBQ0FLSUFvb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQVlnQTBFVGRISkJFSEloQmdzQ1FDQUdRWUNCZ0FoeERRQWdBU0FMSUFRb0Ftd2dCa0VEZGlJT1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRWh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQkliREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBU0d3d0JDeUFIS0FJRUMwVU5BQ0FCSUFzZ0RTZ0NCRUVVZGtFRWNTQU5RUVJySWdvb0FnQkJGblpCQVhFZ0JrRVBka0VRY1NBR1FSTjJRY0FBY1NBT1Fhb0JjWEp5Y25JaUVrSFF1UUZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRNGdDU0FIUVFoQkRDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0RpQU9SU0FWR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaERpQUpJQWRCREVFSUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTVGSUE0Z0ZSc01BUXNnQnlnQ0JBc2hBeUFSSUJNZ0ZDQURJQkpCMExzQmFpMEFBSE1pQXhzMkFvQUNJQW9nQ2lnQ0FFR0FBbkkyQWdBZ0RTQU5LQUlFUWNBQWNqWUNCQ0FHSUFOQkZuUnlRWUFCY2lFR0N3SkFJQVpCZ0lpQXdBQnhEUUFnQVNBTElBUW9BbXdnQmtFR2RpSU9RZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhDaUFKSUFkQkNFRU1JQUVnQTBraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUtJQXBGSUJJYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FEU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQVNHd3dCQ3lBSEtBSUVDMFVOQUNBQklBc2dEU2dDQkVFWGRrRUVjU0FOUVFScklnb29BZ0JCR1haQkFYRWdCa0VTZGtFUWNTQUdRUloyUWNBQWNTQU9RYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ1NBSFFRaEJEQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBVkd3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFKSUFkQkRFRUlJQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdGUnNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjBMc0JhaTBBQUhNaUF4czJBb0FFSUFvZ0NpZ0NBRUdBRUhJMkFnQWdEU0FOS0FJRVFZQUVjallDQkNBR0lBTkJHWFJ5UVlBSWNpRUdDeUFHUVlEQWdJQUVjUTBESUFFZ0N5QUVLQUpzSUFaQkNYWWlFa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ0VvQWdBaUEyc2hCd0ovSUFNZ0FrRVFka3NFUUNBQktBSUVJUW9nQ1NBQlFRaEJEQ0FESUFkTElnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRY2dDaUFLUlNBT0d3d0JDeUFDSUFOQkVIUnJJUUlnQjBHQWdBSnhSUVJBSUFFb0FnUWhDaUFKSUFGQkRFRUlJQU1nQjBzaURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRVWdBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBZEJBWFFpQjBHQWdBSkpEUUFMSUFwRklBb2dEaHNNQVFzZ0FTZ0NCQXRGQkVBZ0J5RUJEQVFMSUFjZ0N5QU5LQUlFUVJwMlFRUnhJQTFCQkdzaURpZ0NBRUVjZGtFQmNTQUdRUlYyUVJCeElBWkJHWFpCd0FCeElCSkJxZ0Z4Y25KeWNpSUtRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJQmF5RURJQUVnQWtFUWRrc0VRQ0FIS0FJRUlSSWdDU0FIUVFoQkRDQUJJQU5MSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFTSUJKRklCVWJEQU1MSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGRFFFZ0F5RUJDeUFIS0FJRURBRUxJQWNvQWdRaEVpQUpJQWRCREVFSUlBRWdBMHNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBU1JTQVNJQlViQ3lFRElCRWdFeUFVSUFNZ0NrSFF1d0ZxTFFBQWN5SURHellDZ0FZZ0RpQU9LQUlBUVlDQUFYSTJBZ0FnRFNBTktBSUVRWUFnY2pZQ0JDQU5JQTBvQW9RQ1FRUnlOZ0tFQWlBTklBMG9Bb3dDUVFGeU5nS01BaUFOSUEwb0FvZ0NJQU5CRW5SeVFRSnlOZ0tJQWlBR0lBTkJISFJ5UVlEQUFISWhCZ3NnRFNBR1FmLy8vN1o3Y1RZQ0FBc2dEVUVFYWlFR0lCRkJCR29oQXlBTVFRRnFJZ3hCd0FCSERRQUxJQTFCREdvaEJpQVJRWVFHYWlFRElCZEJQRWtoWENBWFFRUnFJUmNnWEEwQUN3c2dCQ0FGTmdJSUlBUWdBVFlDQkNBRUlBSTJBZ0FnQkNBSk5nSm9Dd0pBSUJaQklIRkZEUUFnQkNBRVFlUUFhallDYUNBRUlBUW9BZ1FnQkNnQ1pDSUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBUW9BZ0FpQlVFUWRrc0VRQ0FFSUFFMkFnUWdCQ0FHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBRUtBSUlJUUlEUUFKQUlBSU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUZRWUQrQTJvaEJVRUlJUUlNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdCV29oQlVFSElRSU1BUXNnQkNBSk5nSVFRUWdoQWlBRFFRaDBJQVZxSVFVTElBUWdBa0VCYXlJQ05nSUlJQVFnQlVFQmRDSUZOZ0lBSUFRZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0JDQUZJQUZCRUhScklnVTJBZ0FnQWtHQWdBSnhEUUFnQkNBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQUVLQUlJSVFFRFFBSkFJQUVOQUNBRUtBSVFJZ0ZCQVdvaEJ5QUJMUUFCSVFNZ0FTMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FGUVlEK0Eyb2hCVUVJSVFFTUFnc2dCQ0FITmdJUUlBTkJDWFFnQldvaEJVRUhJUUVNQVFzZ0JDQUhOZ0lRUVFnaEFTQURRUWgwSUFWcUlRVUxJQVFnQVVFQmF5SUJOZ0lJSUFRZ0JVRUJkQ0lGTmdJQUlBUWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQkNBQ0lBWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JVRVFka3NFUUNBRUlBRTJBZ1FnQkNBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQUVLQUlJSVFJRFFBSkFJQUlOQUNBRUtBSVFJZ2RCQVdvaENTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FGUVlEK0Eyb2hCVUVJSVFJTUFnc2dCQ0FKTmdJUUlBTkJDWFFnQldvaEJVRUhJUUlNQVFzZ0JDQUpOZ0lRUVFnaEFpQURRUWgwSUFWcUlRVUxJQVFnQWtFQmF5SUNOZ0lJSUFRZ0JVRUJkQ0lGTmdJQUlBUWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dCQ0FGSUFGQkVIUnJJZ1UyQWdBZ0FrR0FnQUp4RFFBZ0JDQUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FFS0FJSUlRRURRQUpBSUFFTkFDQUVLQUlRSWdGQkFXb2hCeUFCTFFBQklRTWdBUzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBRlFZRCtBMm9oQlVFSUlRRU1BZ3NnQkNBSE5nSVFJQU5CQ1hRZ0JXb2hCVUVISVFFTUFRc2dCQ0FITmdJUVFRZ2hBU0FEUVFoMElBVnFJUVVMSUFRZ0FVRUJheUlCTmdJSUlBUWdCVUVCZENJRk5nSUFJQVFnQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0JDQUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCVUVRZGtzRVFDQUVJQUUyQWdRZ0JDQUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FFS0FJSUlRSURRQUpBSUFJTkFDQUVLQUlRSWdkQkFXb2hDU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBRlFZRCtBMm9oQlVFSUlRSU1BZ3NnQkNBSk5nSVFJQU5CQ1hRZ0JXb2hCVUVISVFJTUFRc2dCQ0FKTmdJUVFRZ2hBaUFEUVFoMElBVnFJUVVMSUFRZ0FrRUJheUlDTmdJSUlBUWdCVUVCZENJRk5nSUFJQVFnQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQkNBRklBRkJFSFJySWdVMkFnQWdBa0dBZ0FKeERRQWdCQ0FHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBRUtBSUlJUUVEUUFKQUlBRU5BQ0FFS0FJUUlnRkJBV29oQnlBQkxRQUJJUU1nQVMwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUZRWUQrQTJvaEJVRUlJUUVNQWdzZ0JDQUhOZ0lRSUFOQkNYUWdCV29oQlVFSElRRU1BUXNnQkNBSE5nSVFRUWdoQVNBRFFRaDBJQVZxSVFVTElBUWdBVUVCYXlJQk5nSUlJQVFnQlVFQmRDSUZOZ0lBSUFRZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dCQ0FDSUFZb0FnQWlBV3NpQWpZQ0JDQUJJQVZCRUhaTEJFQWdCQ0FCTmdJRUlBUWdCa0VJUVF3Z0FTQUNTeHRxS0FJQU5nSmtJQVFvQWdnaEFnTkFBa0FnQWcwQUlBUW9BaEFpQmtFQmFpRUhJQVl0QUFFaEF5QUdMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFWQmdQNERhaUVGUVFnaEFnd0NDeUFFSUFjMkFoQWdBMEVKZENBRmFpRUZRUWNoQWd3QkN5QUVJQWMyQWhCQkNDRUNJQU5CQ0hRZ0JXb2hCUXNnQkNBQ1FRRnJJZ0kyQWdnZ0JDQUZRUUYwSWdVMkFnQWdCQ0FCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMREFFTElBUWdCU0FCUVJCMGF5SUhOZ0lBSUFKQmdJQUNjUTBBSUFRZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBTmdKa0lBUW9BZ2doQlFOQUFrQWdCUTBBSUFRb0FoQWlBMEVCYWlFR0lBTXRBQUVoQVNBRExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQlF3Q0N5QUVJQVkyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hCUXdCQ3lBRUlBWTJBaEJCQ0NFRklBRkJDSFFnQjJvaEJ3c2dCQ0FGUVFGcklnVTJBZ2dnQkNBSFFRRjBJZ2MyQWdBZ0JDQUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDd3NnSncwQUlBUVFXaUFFUWJDcEFUWUNaQ0FFUWRDZUFUWUNZQ0FFUWZDZUFUWUNIQXRCQUNBZlFRRnFJZ0VnQVVFRFJpSUJHeUVmSUJrZ0FXc2hHU0FtUVFGcUlpWWdJQ2dDQ0U4TkFTQVpRUUJLRFFBTEN5QW9JQ3BxSVNnZ0JDZ0NHQ0FFTHdGd093QUFJQ2xCQVdvaUtTQWFLQUlzU1EwQUN3c0NRQ0FyUlEwQUFrQWdCQ2dDR0NJQklBUW9BaEFpQTBFQ2Frc0VRQ0FoUlEwQklDTWdBU0FFS0FJVUlnWnJOZ0k0SUNNZ0F5QUdhellDTkNBaklBRWdBMnRCQW1zMkFqQWdIVUVDUVpEeUFDQWpRVEJxRUE4TUFnc2dCQ2dDRENJQlFRTkpEUUVnSVFSQUlDTWdBVFlDVUNBZFFRSkI2VFVnSTBIUUFHb1FEd3dDQ3lBaklBRTJBa0FnSFVFQ1FlazFJQ05CUUdzUUR3d0JDeUFqSUFFZ0JDZ0NGQ0lHYXpZQ0tDQWpJQU1nQm1zMkFpUWdJeUFCSUFOclFRSnJOZ0lnSUIxQkFrR1E4Z0FnSTBFZ2FoQVBDeUFhS0FJOFJRMEFJQVFnTERZQ2RBc2dNQ2dDQkNFQklCb29BZ3doWFNBYUtBSUlJREFvQWdCcklRZ2dNQ2dDRUNJR1FRRnhCRUFnTWlnQ0hDQTNRWmdCYkdvaUIwR1FBV3NvQWdBZ0NHb2dCMEdZQVdzb0FnQnJJUWdMSUYwZ0FXc2hBeUFHUVFKeEJFQWdNaWdDSENBM1FaZ0JiR29pQVVHTUFXc29BZ0FnQTJvZ0FVR1VBV3NvQWdCcklRTUxJQm9vQWp3aUJpRUNJQVpGQkVBZ0JDZ0NkQ0VDQ3lBRUtBS0FBU0VXSUFRb0Fud2hEUUpBSUM4b0FxZ0dJZ2RGRFFBZ0ZrVWdEVVZ5SVFFZ0IwRWVUQVJBSUFFTkFVRUFJUkFEUUNBTklCQnNJUVJCQUNFQkEwQWdBaUFCSUFScVFRSjBhaUlSS0FJQUlna2dDVUVmZFNJRmN5QUZheUlGSUFkMkJFQWdFVUVBSUFVZ0x5Z0NxQVoySWhGcklCRWdDVUVBU0JzMkFnQUxJQUZCQVdvaUFTQU5SdzBBQ3lBUVFRRnFJaEFnRmtjTkFBc01BUXNnQVEwQUlBSkJBQ0FOSUJac1FRSjBFQlVhQ3lBR0JFQWdEU0FXYkNFR0lDOG9BaFJCQVVZRVFDQUdSUTBGUVFBaEFTQUdRUVJQQkVBZ0JrRjhjU0VCUVFBaEJBTkFJQUlnQkVFQ2RHb2lBeUFEL1FBQ0FDSmUvUnNBUVFKdC9SRWdYdjBiQVVFQ2JmMGNBU0JlL1JzQ1FRSnQvUndDSUY3OUd3TkJBbTM5SEFQOUN3SUFJQVJCQkdvaUJDQUJSdzBBQ3lBQklBWkdEUVlMQTBBZ0FpQUJRUUowYWlJRElBTW9BZ0JCQW0wMkFnQWdBVUVCYWlJQklBWkhEUUFMREFVTElBWkZEUVFnTUNvQ0lFTUFBQUEvbENGbVFRQWhCQUpBSUFaQkJFa0VRQ0FDSVFFTUFRc2dBaUFHUVh4eElnUkJBblJxSVFFZ1p2MFRJVjVCQUNFREEwQWdBaUFEUVFKMGFpSUhJRjRnQi8wQUFnRDkrZ0g5NWdIOUN3SUFJQU5CQkdvaUF5QUVSdzBBQ3lBRUlBWkdEUVVMQTBBZ0FTQm1JQUVvQWdDeWxEZ0NBQ0FCUVFScUlRRWdCRUVCYWlJRUlBWkhEUUFMREFRTElEWWdOV3NoRVNBdktBSVVRUUZIRFFJZ0ZrVU5BeUF5S0FJa0lnWWdBeUFSYkNJRFFRSjBhaUFJUVFKMGFpRUpJQTFCZkhFaURFRUJheUlCUVFSeElRc2dOaUFOSURWcWEwRUNkQ0VhSUFGQkFuWkJBV3BCL3YvLy93ZHhJUjBnQXlBSWFrRUNkQ0FHYWlBQ2F5RUtRUUFoQ0NBQlFRTkhJUlFEUUVFQUlRRUNRQ0FNUlEwQUlBZ2dEV3doQXlBSklBZ2dFV3hCQW5ScUlRWkJBQ0VISUJRRVFBTkFJQVlnQVVFQ2RHb2dBaUFCSUFOcVFRSjBhdjBBQWdBaVh2MGJBRUVDYmYwUklGNzlHd0ZCQW0zOUhBRWdYdjBiQWtFQ2JmMGNBaUJlL1JzRFFRSnQvUndEL1FzQ0FDQUdJQUZCQkhJaUJFRUNkR29nQWlBRElBUnFRUUowYXYwQUFnQWlYdjBiQUVFQ2JmMFJJRjc5R3dGQkFtMzlIQUVnWHYwYkFrRUNiZjBjQWlCZS9Sc0RRUUp0L1J3RC9Rc0NBQ0FCUVFocUlRRWdCMEVDYWlJSElCMUhEUUFMQ3lBTERRQWdCaUFCUVFKMGFpQUNJQUVnQTJwQkFuUnEvUUFDQUNKZS9Sc0FRUUp0L1JFZ1h2MGJBVUVDYmYwY0FTQmUvUnNDUVFKdC9Sd0NJRjc5R3dOQkFtMzlIQVA5Q3dJQUlBRkJCR29oQVFzQ1FDQUJJQTFQRFFBZ0NDQU5iQ0VESUFrZ0NDQVJiRUVDZEdvaEJ3SkFJQTBnQVdzaUVFRUVTUVJBSUFFaEJBd0JDeUFLSUFnZ0dteHFRUkJKQkVBZ0FTRUVEQUVMSUFFZ0VFRjhjU0lGYWlFRVFRQWhCZ05BSUFjZ0FTQUdhaUloUVFKMGFpQUNJQU1nSVdwQkFuUnEvUUFDQUNKZS9Sc0FRUUp0L1JFZ1h2MGJBVUVDYmYwY0FTQmUvUnNDUVFKdC9Sd0NJRjc5R3dOQkFtMzlIQVA5Q3dJQUlBWkJCR29pQmlBRlJ3MEFDeUFGSUJCR0RRRUxJQVJCQVdvaEFTQU5JQVJyUVFGeEJFQWdCeUFFUVFKMGFpQUNJQU1nQkdwQkFuUnFLQUlBUVFKdE5nSUFJQUVoQkFzZ0FTQU5SZzBBQTBBZ0J5QUVRUUowYWlBQ0lBTWdCR3BCQW5ScUtBSUFRUUp0TmdJQUlBY2dCRUVCYWlJQlFRSjBhaUFDSUFFZ0EycEJBblJxS0FJQVFRSnROZ0lBSUFSQkFtb2lCQ0FOUncwQUN3c2dDRUVCYWlJSUlCWkhEUUFMREFNTElDTWdHVFlDQUNBZFFRSkIxY0VBSUNNUUR3c2dFQ2dDQUVFQU5nSUFEQUVMSUJaRkRRQWdEVVVOQUNBeUtBSWtJQU1nRVd4QkFuUnFJQWhCQW5ScUlRY2dEVUY4Y1NJRFFRSjBJUVlnTUNvQ0lFTUFBQUEvbENKbS9STWhYa0VBSVJBZ0RVRUVTU0VJQTBBQ1FBSkFJQWdFUUNBQ0lRa2dCeUVCUVFBaEJBd0JDeUFHSUFkcUlRRWdBaUFHYWlFSlFRQWhCQU5BSUFjZ0JFRUNkQ0lGYWlCZUlBSWdCV3I5QUFJQS9mb0IvZVlCL1FzQ0FDQUVRUVJxSWdRZ0EwY05BQXNnQ1NFQ0lBTWlCQ0FOUmcwQkN5QUpJUUlEUUNBQklHWWdBaWdDQUxLVU9BSUFJQUZCQkdvaEFTQUNRUVJxSVFJZ0JFRUJhaUlFSUExSERRQUxDeUFISUJGQkFuUnFJUWNnRUVFQmFpSVFJQlpIRFFBTEN5QUFFQkFnSTBIZ0FHb2tBQXZXQkFFSmZ5QUFLQUlzUVFoUEJFQWdBQ2dDS0NFRlFRZ2hDZ05BSUFBb0FneEJCWFFoQ0NBQUtBSUFJUVFnQUNnQ0pDRURBa0FnQUNnQ0ZDSUdJQUFvQWhBaUFVME5BQ0FFSUFocUlRY2dBVUVCYWlFQ0lBWWdBV3RCQVhFRVFDQUhJQUZCQm5ScUlna2dCU0FCSUFOc1FRSjBhaUlCL1FBQ0FQMExBZ0FnQ1NBQi9RQUNFUDBMQWhBZ0FpRUJDeUFDSUFaR0RRQURRQ0FISUFGQkJuUnFJZ0lnQlNBQklBTnNRUUowYWlJSi9RQUNBUDBMQWdBZ0FpQUovUUFDRVAwTEFoQWdCeUFCUVFGcUlnSkJCblJxSWdrZ0JTQUNJQU5zUVFKMGFpSUMvUUFDRVAwTEFoQWdDU0FDL1FBQ0FQMExBZ0FnQVVFQ2FpSUJJQVpIRFFBTEN3SkFJQUFvQWh3aUJpQUFLQUlZSWdGTkRRQWdCQ0FJYTBFZ2FpRUhJQVVnQUNnQ0NDQURiRUVDZEdvaENDQUJRUUZxSVFJZ0JpQUJhMEVCY1FSQUlBY2dBVUVHZEdvaUJDQUlJQUVnQTJ4QkFuUnFJZ0g5QUFJQS9Rc0NBQ0FFSUFIOUFBSVEvUXNDRUNBQ0lRRUxJQUlnQmtZTkFBTkFJQWNnQVVFR2RHb2lBaUFJSUFFZ0EyeEJBblJxSWdUOUFBSUEvUXNDQUNBQ0lBVDlBQUlRL1FzQ0VDQUhJQUZCQVdvaUFrRUdkR29pQkNBSUlBSWdBMnhCQW5ScUlnTDlBQUlRL1FzQ0VDQUVJQUw5QUFJQS9Rc0NBQ0FCUVFKcUlnRWdCa2NOQUFzTElBQVFJa0VBSVFFZ0FDZ0NJQVJBQTBBZ0JTQUFLQUlrSUFGc1FRSjBhaUlDSUFBb0FnQWdBVUVGZEdvaUEvMEFBZ0Q5Q3dJQUlBSWdBLzBBQWhEOUN3SVFJQUZCQVdvaUFTQUFLQUlnU1EwQUN3c2dCVUVnYWlFRklBcEJDR29pQ2lBQUtBSXNUUTBBQ3dzZ0FDZ0NBQkFRSUFBUUVBdjNEUUVsZnlBQUtBSXNRUWhQQkVBZ0FDZ0NKQ0lLUVFWMElSNGdDa0VIYkNFV0lBcEJCbXdoRnlBS1FRVnNJUmdnQ2tFRGJDRVpJQXBCQVhRaEdpQUFLQUlvSWdFZ0NrRWNiR29oSHlBQklBcEJHR3hxSVNBZ0FTQUtRUlJzYWlFaElBRWdDa0VFZEdvaElpQUJJQXBCREd4cUlTTWdBU0FLUVFOMElpUnFJU1VnQVNBS1FRSjBJaHRxSVNaQkNDRWNBMEFnQUNBQklBQW9BaVJCQ0JBN0lBQVFJZ0pBSUFBb0FpQWlDMFVOQUNBZElCNXNJUWdnQUNnQ0FDRUdRUUFoQkFKQUFrQWdDMEhvQWtrTkFDQUdRUXhxSWc0Z0MwRUJheUlDUVFWMElnTnFJQTVKRFFBZ0JrRUlhaUlQSUFOcUlBOUpEUUFnQXlBR2FpQUdTUTBBSUFaQkJHb2lFQ0FEYWlBUVNRMEFJQUpCLy8vL1Awc05BQ0FCSUFnZ0ptb2lBeUFMUVFKMElnVnFJZ3hKSUFNZ0FTQUZhaUlIU1hFTkFDQUJJQWdnSldvaUFpQUZhaUlOU1NBQ0lBZEpjUTBBSUFFZ0JTQUlJQ05xSWdscUlnVkpJQWNnQ1V0eERRQWdCaUFIU1NBQklBWWdDMEVGZEdvaUVVRWNheUlTU1hFTkFDQUJJQkZCR0dzaUUwa2dCeUFRUzNFTkFDQUJJQkZCRkdzaUZFa2dCeUFQUzNFTkFDQUhJQTVMSUFFZ0VVRVFheUlIU1hFTkFDQURJQTFKSUFJZ0RFbHhEUUFnQXlBRlNTQUpJQXhKY1EwQUlBTWdFa2tnQmlBTVNYRU5BQ0FESUJOSklBd2dFRXR4RFFBZ0F5QVVTU0FNSUE5TGNRMEFJQU1nQjBrZ0RDQU9TM0VOQUNBQ0lBVkpJQWtnRFVseERRQWdBaUFTU1NBR0lBMUpjUTBBSUFJZ0Uwa2dEU0FRUzNFTkFDQUNJQlJKSUEwZ0QwdHhEUUFnQWlBSFNTQU5JQTVMY1EwQUlBa2dFa2tnQlNBR1MzRU5BQ0FKSUJOSklBVWdFRXR4RFFBZ0NTQVVTU0FGSUE5TGNRMEFJQWNnQ1VzZ0JTQU9TM0VOQUNBTFFmei8vLzhBY1NFRVFRQWhBd05BSUFFZ0EwRUNkR29nQmlBRFFRVjBhaUlDL1FrQ0FDQUNLZ0lnL1NBQklBSkJRR3NxQWdEOUlBSWdBaW9DWVAwZ0EvMExBZ0FnQVNBRElBcHFRUUowYWlBQy9Ra0NCQ0FDS2dJay9TQUJJQUlxQWtUOUlBSWdBaW9DWlAwZ0EvMExBZ0FnQVNBRElCcHFRUUowYWlBQy9Ra0NDQ0FDS2dJby9TQUJJQUlxQWtqOUlBSWdBaW9DYVAwZ0EvMExBZ0FnQVNBRElCbHFRUUowYWlBQy9Ra0NEQ0FDS2dJcy9TQUJJQUlxQWt6OUlBSWdBaW9DYlAwZ0EvMExBZ0FnQTBFRWFpSURJQVJIRFFBTElBUWdDMFlOQVFzRFFDQUJJQVJCQW5ScUlBWWdCRUVGZEdvaUF5b0NBRGdDQUNBQklBUWdDbXBCQW5ScUlBTXFBZ1E0QWdBZ0FTQUVJQnBxUVFKMGFpQURLZ0lJT0FJQUlBRWdCQ0FaYWtFQ2RHb2dBeW9DRERnQ0FDQUVRUUZxSWdRZ0MwY05BQXNMSUFBb0FnQWhCa0VBSVFRQ1FDQUxRZHdBU1EwQUlBWkJIR29pRHlBTFFRRnJJZ0pCQlhRaUEyb2dEMGtOQUNBR1FSaHFJaEFnQTJvZ0VFa05BQ0FHUVJCcUloRWdBMm9nRVVrTkFDQUdRUlJxSWhJZ0Eyb2dFa2tOQUNBQ1FmLy8vejlMRFFBZ0NDQWlhaUlESUFnZ0lXb2lBaUFMUVFKMElnVnFJZ3hKSUFJZ0F5QUZhaUlIU1hFTkFDQURJQWdnSUdvaUNTQUZhaUlOU1NBSElBbExjUTBBSUFNZ0NDQWZhaUlJSUFWcUlnVkpJQWNnQ0V0eERRQWdBeUFHSUF0QkJYUnFJZzVCREdzaUUwa2dCeUFSUzNFTkFDQURJQTVCQ0dzaUZFa2dCeUFTUzNFTkFDQURJQTVCQkdzaUZVa2dCeUFRUzNFTkFDQURJQTVKSUFjZ0QwdHhEUUFnQWlBTlNTQUpJQXhKY1EwQUlBSWdCVWtnQ0NBTVNYRU5BQ0FDSUJOSklBd2dFVXR4RFFBZ0FpQVVTU0FNSUJKTGNRMEFJQUlnRlVrZ0RDQVFTM0VOQUNBQ0lBNUpJQXdnRDB0eERRQWdDQ0FOU1NBRklBbExjUTBBSUFrZ0Uwa2dEU0FSUzNFTkFDQUpJQlJKSUEwZ0VrdHhEUUFnQ1NBVlNTQU5JQkJMY1EwQUlBa2dEa2tnRFNBUFMzRU5BQ0FJSUJOSklBVWdFVXR4RFFBZ0NDQVVTU0FGSUJKTGNRMEFJQWdnRlVrZ0JTQVFTM0VOQUNBSUlBNUpJQVVnRDB0eERRQWdDMEg4Ly8vL0FIRWhCRUVBSVFNRFFDQUJJQU1nRzJwQkFuUnFJQVlnQTBFRmRHb2lBdjBKQWhBZ0Fpb0NNUDBnQVNBQ0tnSlEvU0FDSUFJcUFuRDlJQVA5Q3dJQUlBRWdBeUFZYWtFQ2RHb2dBdjBKQWhRZ0Fpb0NOUDBnQVNBQ0tnSlUvU0FDSUFJcUFuVDlJQVA5Q3dJQUlBRWdBeUFYYWtFQ2RHb2dBdjBKQWhnZ0Fpb0NPUDBnQVNBQ0tnSlkvU0FDSUFJcUFuajlJQVA5Q3dJQUlBRWdBeUFXYWtFQ2RHb2dBdjBKQWh3Z0Fpb0NQUDBnQVNBQ0tnSmMvU0FDSUFJcUFuejlJQVA5Q3dJQUlBTkJCR29pQXlBRVJ3MEFDeUFFSUF0R0RRRUxBMEFnQVNBRUlCdHFRUUowYWlBR0lBUkJCWFJxSWdNcUFoQTRBZ0FnQVNBRUlCaHFRUUowYWlBREtnSVVPQUlBSUFFZ0JDQVhha0VDZEdvZ0F5b0NHRGdDQUNBQklBUWdGbXBCQW5ScUlBTXFBaHc0QWdBZ0JFRUJhaUlFSUF0SERRQUxDeUFkUVFGcUlSMGdBU0FrUVFKMGFpRUJJQnhCQ0dvaUhDQUFLQUlzVFEwQUN3c2dBQ2dDQUJBUUlBQVFFQXR6QVFKL0lBQW9BaHdpQVVFSWFpSURJQUFvQWlBaUFrMEVRQU5BSUFBZ0FDZ0NHQ0FCUVFKMGFpQUFLQUlVUVFnUU1DQURJZ0ZCQ0dvaUF5QUFLQUlnSWdKTkRRQUxDeUFCSUFKSkJFQWdBQ0FBS0FJWUlBRkJBblJxSUFBb0FoUWdBaUFCYXhBd0N5QUFLQUlBRUJBZ0FCQVFDMFFBSUFBb0Fod2lBU0FBS0FJZ1NRUkFBMEFnQUNBQUtBSVlJQUFvQWhRZ0FXeEJBblJxRUYwZ0FVRUJhaUlCSUFBb0FpQkpEUUFMQ3lBQUtBSUFFQkFnQUJBUUM2Z0JBUVYvSUFBb0FsUWlBeWdDQUNFRklBTW9BZ1FpQkNBQUtBSVVJQUFvQWh3aUIyc2lCaUFFSUFaSkd5SUdCRUFnQlNBSElBWVFFaG9nQXlBREtBSUFJQVpxSWdVMkFnQWdBeUFES0FJRUlBWnJJZ1EyQWdRTElBUWdBaUFDSUFSTEd5SUVCRUFnQlNBQklBUVFFaG9nQXlBREtBSUFJQVJxSWdVMkFnQWdBeUFES0FJRUlBUnJOZ0lFQ3lBRlFRQTZBQUFnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFJTG5nVUNCbjRFZnlBQklBRW9BZ0JCQjJwQmVIRWlBVUVRYWpZQ0FDQUFJUXNnQVNrREFDRURJQUVwQXdnaEJ5TUFRU0JySWdna0FDQUhRdi8vLy8vLy96K0RJUVFDZmlBSFFqQ0lRdi8vQVlNaUJhY2lDa0dCK0FCclFmMFBUUVJBSUFSQ0JJWWdBMEk4aUlRaEFpQUtRWUQ0QUd1dElRVUNRQ0FEUXYvLy8vLy8vLy8vRDRNaUEwS0JnSUNBZ0lDQWdBaGFCRUFnQWtJQmZDRUNEQUVMSUFOQ2dJQ0FnSUNBZ0lBSVVnMEFJQUpDQVlNZ0Fud2hBZ3RDQUNBQ0lBSkMvLy8vLy8vLy93ZFdJZ0FiSVFJZ0FLMGdCWHdNQVFzQ1FDQURJQVNFVUEwQUlBVkMvLzhCVWcwQUlBUkNCSVlnQTBJOGlJUkNnSUNBZ0lDQWdBU0VJUUpDL3c4TUFRdEMvdzhnQ2tIK2h3RkxEUUFhUWdCQmdQZ0FRWUg0QUNBRlVDSUJHeUlBSUFwcklnbEI4QUJLRFFBYUlBTWhBaUFFSUFSQ2dJQ0FnSUNBd0FDRUlBRWJJZ1loQkFKQVFZQUJJQWxySWdGQndBQnhCRUFnQXlBQlFVQnFyWVloQkVJQUlRSU1BUXNnQVVVTkFDQUVJQUd0SWdXR0lBSkJ3QUFnQVd1dGlJUWhCQ0FDSUFXR0lRSUxJQWdnQWpjREVDQUlJQVEzQXhnQ1FDQUpRY0FBY1FSQUlBWWdDVUZBYXEySUlRTkNBQ0VHREFFTElBbEZEUUFnQmtIQUFDQUphNjJHSUFNZ0NhMGlBb2lFSVFNZ0JpQUNpQ0VHQ3lBSUlBTTNBd0FnQ0NBR053TUlJQWdwQXdoQ0JJWWdDQ2tEQUNJQ1FqeUloQ0VEQWtBZ0FDQUtSeUFJS1FNUUlBZ3BBeGlFUWdCU2NhMGdBa0wvLy8vLy8vLy8vdytEaENJQ1FvR0FnSUNBZ0lDQUNGb0VRQ0FEUWdGOElRTU1BUXNnQWtLQWdJQ0FnSUNBZ0FoU0RRQWdBMElCZ3lBRGZDRURDeUFEUW9DQWdJQ0FnSUFJaFNBRElBTkMvLy8vLy8vLy93ZFdJZ0FiSVFJZ0FLMExJUU1nQ0VFZ2FpUUFJQXNnQjBLQWdJQ0FnSUNBZ0lCL2d5QURRalNHaENBQ2hMODVBd0FMaGhnREUzOEJmQU4rSXdCQnNBUnJJZ3drQUNBTVFRQTJBaXdDUUNBQnZTSWFRZ0JUQkVCQkFTRVJRYm9JSVJNZ0Fab2lBYjBoR2d3QkN5QUVRWUFRY1FSQVFRRWhFVUc5Q0NFVERBRUxRY0FJUWJzSUlBUkJBWEVpRVJzaEV5QVJSU0VWQ3dKQUlCcENnSUNBZ0lDQWdQai9BSU5DZ0lDQWdJQ0FnUGovQUZFRVFDQUFRU0FnQWlBUlFRTnFJZ01nQkVILy8zdHhFQndnQUNBVElCRVFHU0FBUVpJSlFmWUtJQVZCSUhFaUJSdEIrd2xCK2dvZ0JSc2dBU0FCWWh0QkF4QVpJQUJCSUNBQ0lBTWdCRUdBd0FCekVCd2dBeUFDSUFJZ0EwZ2JJUW9NQVFzZ0RFRVFhaUVTQWtBQ2Z3SkFJQUVnREVFc2FoQmxJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWc1QjRRQkhEUUVNQXdzZ0JVRWdjaUlPUWVFQVJnMENJQXdvQWl3aENVRUdJQU1nQTBFQVNCc01BUXNnRENBR1FSMXJJZ2syQWl3Z0FVUUFBQUFBQUFDd1FhSWhBVUVHSUFNZ0EwRUFTQnNMSVFzZ0RFRXdha0dnQWtFQUlBbEJBRTRiYWlJTklRY0RRQ0FIQW44Z0FVUUFBQUFBQUFEd1FXTWdBVVFBQUFBQUFBQUFBR1p4QkVBZ0Fhc01BUXRCQUFzaUF6WUNBQ0FIUVFScUlRY2dBU0FEdUtGRUFBQUFBR1hOelVHaUlnRkVBQUFBQUFBQUFBQmlEUUFMQWtBZ0NVRUFUQVJBSUFraEF5QUhJUVlnRFNFSURBRUxJQTBoQ0NBSklRTURRRUVkSUFNZ0EwRWRUeHNoQXdKQUlBZEJCR3NpQmlBSVNRMEFJQU90SVJ4Q0FDRWFBMEFnQmlBYVF2Ly8vLzhQZ3lBR05RSUFJQnlHZkNJYlFvQ1U2OXdEZ0NJYVFvRHNsS01NZmlBYmZENENBQ0FHUVFScklnWWdDRThOQUFzZ0cwS0FsT3ZjQTFRTkFDQUlRUVJySWdnZ0dqNENBQXNEUUNBSUlBY2lCa2tFUUNBR1FRUnJJZ2NvQWdCRkRRRUxDeUFNSUF3b0Fpd2dBMnNpQXpZQ0xDQUdJUWNnQTBFQVNnMEFDd3NnQTBFQVNBUkFJQXRCR1dwQkNXNUJBV29oRHlBT1FlWUFSaUVRQTBCQkNVRUFJQU5ySWdNZ0EwRUpUeHNoQ2dKQUlBWWdDRTBFUUNBSUtBSUFSVUVDZENFSERBRUxRWUNVNjl3RElBcDJJUlJCZnlBS2RFRi9jeUVXUVFBaEF5QUlJUWNEUUNBSElBTWdCeWdDQUNJWElBcDJhallDQUNBV0lCZHhJQlJzSVFNZ0IwRUVhaUlISUFaSkRRQUxJQWdvQWdCRlFRSjBJUWNnQTBVTkFDQUdJQU0yQWdBZ0JrRUVhaUVHQ3lBTUlBd29BaXdnQ21vaUF6WUNMQ0FOSUFjZ0NHb2lDQ0FRR3lJSElBOUJBblJxSUFZZ0JpQUhhMEVDZFNBUFNoc2hCaUFEUVFCSURRQUxDMEVBSVFNQ1FDQUdJQWhORFFBZ0RTQUlhMEVDZFVFSmJDRURRUW9oQnlBSUtBSUFJZ3BCQ2trTkFBTkFJQU5CQVdvaEF5QUtJQWRCQ213aUIwOE5BQXNMSUFzZ0EwRUFJQTVCNWdCSEcyc2dEa0huQUVZZ0MwRUFSM0ZySWdjZ0JpQU5hMEVDZFVFSmJFRUphMGdFUUNBTVFUQnFRWVJnUWFSaUlBbEJBRWdiYWlBSFFZRElBR29pQ2tFSmJTSVBRUUowYWlFSlFRb2hCeUFQUVhkc0lBcHFJZ3BCQjB3RVFBTkFJQWRCQ213aEJ5QUtRUUZxSWdwQkNFY05BQXNMQWtBZ0NTZ0NBQ0lRSUJBZ0IyNGlEeUFIYkNJS1JpQUpRUVJxSWhRZ0JrWnhEUUFnRUNBS2F5RVFBa0FnRDBFQmNVVUVRRVFBQUFBQUFBQkFReUVCSUFkQmdKVHIzQU5IRFFFZ0NDQUpUdzBCSUFsQkJHc3RBQUJCQVhGRkRRRUxSQUVBQUFBQUFFQkRJUUVMUkFBQUFBQUFBT0EvUkFBQUFBQUFBUEEvUkFBQUFBQUFBUGcvSUFZZ0ZFWWJSQUFBQUFBQUFQZy9JQkFnQjBFQmRpSVVSaHNnRUNBVVNSc2hHUUpBSUJVTkFDQVRMUUFBUVMxSERRQWdHWm9oR1NBQm1pRUJDeUFKSUFvMkFnQWdBU0Fab0NBQllRMEFJQWtnQnlBS2FpSUROZ0lBSUFOQmdKVHIzQU5QQkVBRFFDQUpRUUEyQWdBZ0NDQUpRUVJySWdsTEJFQWdDRUVFYXlJSVFRQTJBZ0FMSUFrZ0NTZ0NBRUVCYWlJRE5nSUFJQU5CLzVQcjNBTkxEUUFMQ3lBTklBaHJRUUoxUVFsc0lRTkJDaUVISUFnb0FnQWlDa0VLU1EwQUEwQWdBMEVCYWlFRElBb2dCMEVLYkNJSFR3MEFDd3NnQ1VFRWFpSUhJQVlnQmlBSFN4c2hCZ3NEUUNBR0lnY2dDRTBpQ2tVRVFDQUdRUVJySWdZb0FnQkZEUUVMQ3dKQUlBNUI1d0JIQkVBZ0JFRUljU0VKREFFTElBTkJmM05CZnlBTFFRRWdDeHNpQmlBRFNpQURRWHRLY1NJSkd5QUdhaUVMUVg5QmZpQUpHeUFGYWlFRklBUkJDSEVpQ1EwQVFYY2hCZ0pBSUFvTkFDQUhRUVJyS0FJQUlnNUZEUUJCQ2lFS1FRQWhCaUFPUVFwd0RRQURRQ0FHSWdsQkFXb2hCaUFPSUFwQkNtd2lDbkJGRFFBTElBbEJmM01oQmdzZ0J5QU5hMEVDZFVFSmJDRUtJQVZCWDNGQnhnQkdCRUJCQUNFSklBc2dCaUFLYWtFSmF5SUdRUUFnQmtFQVNoc2lCaUFHSUF0S0d5RUxEQUVMUVFBaENTQUxJQU1nQ21vZ0JtcEJDV3NpQmtFQUlBWkJBRW9iSWdZZ0JpQUxTaHNoQ3d0QmZ5RUtJQXRCL2YvLy93ZEIvdi8vL3djZ0NTQUxjaUlRRzBvTkFTQUxJQkJCQUVkcVFRRnFJUTRDUUNBRlFWOXhJaFZCeGdCR0JFQWdBeUFPUWYvLy8vOEhjMG9OQXlBRFFRQWdBMEVBU2hzaEJnd0JDeUFTSUFNZ0EwRWZkU0lHY3lBR2E2MGdFaEFxSWdaclFRRk1CRUFEUUNBR1FRRnJJZ1pCTURvQUFDQVNJQVpyUVFKSURRQUxDeUFHUVFKcklnOGdCVG9BQUNBR1FRRnJRUzFCS3lBRFFRQklHem9BQUNBU0lBOXJJZ1lnRGtILy8vLy9CM05LRFFJTElBWWdEbW9pQXlBUlFmLy8vLzhIYzBvTkFTQUFRU0FnQWlBRElCRnFJZ01nQkJBY0lBQWdFeUFSRUJrZ0FFRXdJQUlnQXlBRVFZQ0FCSE1RSEFKQUFrQUNRQ0FWUWNZQVJnUkFJQXhCRUdwQkNYSWhCU0FOSUFnZ0NDQU5TeHNpQ1NFSUEwQWdDRFVDQUNBRkVDb2hCZ0pBSUFnZ0NVY0VRQ0FHSUF4QkVHcE5EUUVEUUNBR1FRRnJJZ1pCTURvQUFDQUdJQXhCRUdwTERRQUxEQUVMSUFVZ0JrY05BQ0FHUVFGcklnWkJNRG9BQUFzZ0FDQUdJQVVnQm1zUUdTQUlRUVJxSWdnZ0RVME5BQXNnRUFSQUlBQkJnZ3hCQVJBWkN5QUhJQWhORFFFZ0MwRUFUQTBCQTBBZ0NEVUNBQ0FGRUNvaUJpQU1RUkJxU3dSQUEwQWdCa0VCYXlJR1FUQTZBQUFnQmlBTVFSQnFTdzBBQ3dzZ0FDQUdRUWtnQ3lBTFFRbE9HeEFaSUF0QkNXc2hCaUFJUVFScUlnZ2dCMDhOQXlBTFFRbEtJUmdnQmlFTElCZ05BQXNNQWdzQ1FDQUxRUUJJRFFBZ0J5QUlRUVJxSUFjZ0NFc2JJUTBnREVFUWFrRUpjaUVGSUFnaEJ3TkFJQVVnQnpVQ0FDQUZFQ29pQmtZRVFDQUdRUUZySWdaQk1Eb0FBQXNDUUNBSElBaEhCRUFnQmlBTVFSQnFUUTBCQTBBZ0JrRUJheUlHUVRBNkFBQWdCaUFNUVJCcVN3MEFDd3dCQ3lBQUlBWkJBUkFaSUFaQkFXb2hCaUFKSUF0eVJRMEFJQUJCZ2d4QkFSQVpDeUFBSUFZZ0JTQUdheUlHSUFzZ0JpQUxTQnNRR1NBTElBWnJJUXNnQjBFRWFpSUhJQTFQRFFFZ0MwRUFUZzBBQ3dzZ0FFRXdJQXRCRW1wQkVrRUFFQndnQUNBUElCSWdEMnNRR1F3Q0N5QUxJUVlMSUFCQk1DQUdRUWxxUVFsQkFCQWNDeUFBUVNBZ0FpQURJQVJCZ01BQWN4QWNJQU1nQWlBQ0lBTklHeUVLREFFTElCTWdCVUVhZEVFZmRVRUpjV29oQ0FKQUlBTkJDMHNOQUVFTUlBTnJJUVpFQUFBQUFBQUFNRUFoR1FOQUlCbEVBQUFBQUFBQU1FQ2lJUmtnQmtFQmF5SUdEUUFMSUFndEFBQkJMVVlFUUNBWklBR2FJQm1ob0pvaEFRd0JDeUFCSUJtZ0lCbWhJUUVMSUJJZ0RDZ0NMQ0lISUFkQkgzVWlCbk1nQm11dElCSVFLaUlHUmdSQUlBWkJBV3NpQmtFd09nQUFDeUFSUVFKeUlRc2dCVUVnY1NFTklBWkJBbXNpQ1NBRlFROXFPZ0FBSUFaQkFXdEJMVUVySUFkQkFFZ2JPZ0FBSUFSQkNIRWhCaUFNUVJCcUlRY0RRQ0FISWdVQ2Z5QUJtVVFBQUFBQUFBRGdRV01FUUNBQnFnd0JDMEdBZ0lDQWVBc2lCMEhReEFGcUxRQUFJQTF5T2dBQUlBRWdCN2VoUkFBQUFBQUFBREJBb2lFQkFrQWdCVUVCYWlJSElBeEJFR3ByUVFGSERRQUNRQ0FHRFFBZ0EwRUFTZzBBSUFGRUFBQUFBQUFBQUFCaERRRUxJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMUVg4aENrSDkvLy8vQnlBTElCSWdDV3NpQm1vaURXc2dBMGdOQUNBQVFTQWdBaUFOSUFOQkFtb2dCeUFNUVJCcUlnZHJJZ1VnQlVFQ2F5QURTQnNnQlNBREd5SUthaUlESUFRUUhDQUFJQWdnQ3hBWklBQkJNQ0FDSUFNZ0JFR0FnQVJ6RUJ3Z0FDQUhJQVVRR1NBQVFUQWdDaUFGYTBFQVFRQVFIQ0FBSUFrZ0JoQVpJQUJCSUNBQ0lBTWdCRUdBd0FCekVCd2dBeUFDSUFJZ0EwZ2JJUW9MSUF4QnNBUnFKQUFnQ2dzRUFFSUFDd1FBUVFBTG53TUJDWDlCNWdvaEFBSkFBMEFnQUMwQUFDSUJSUTBCSUFGQlBVWU5BU0FBUVFGcUlnQkJBM0VOQUFzQ1FBSkFRWUNDaEFnZ0FDZ0NBQ0lDYXlBQ2NrR0FnWUtFZUhGQmdJR0NoSGhIRFFBRFFFR0Fnb1FJSUFKQnZmcjA2UU56SWdGcklBRnlRWUNCZ29SNGNVR0FnWUtFZUVjTkFTQUFLQUlFSVFJZ0FFRUVhaUlCSVFBZ0FrR0Fnb1FJSUFKcmNrR0FnWUtFZUhGQmdJR0NoSGhHRFFBTERBRUxJQUFoQVFzRFFDQUJJZ0F0QUFBaUFrVU5BU0FBUVFGcUlRRWdBa0U5UncwQUN3c2dBQ0lCUWVZS1JnUkFRUUFQQ3dKQUlBRkI1Z3BySWdCQjVncHFMUUFBRFFCQnNNOEJLQUlBSWdSRkRRQWdCQ2dDQUNJRlJRMEFBMEFDUUFKL0lBVWhBa0htQ2lFR1FRQWdBQ0lCUlEwQUdrSG1DaTBBQUNJREJIOENRQU5BSUFNZ0FpMEFBQ0lIUncwQklBZEZEUUVnQVVFQmF5SUJSUTBCSUFKQkFXb2hBaUFHTFFBQklRTWdCa0VCYWlFR0lBTU5BQXRCQUNFREN5QURCVUVBQ3lBQ0xRQUFhd3RGQkVBZ0FDQUZhaUlCTFFBQVFUMUdEUUVMSUFRb0FnUWhCU0FFUVFScUlRUWdCUTBCREFJTEN5QUJRUUZxSVFnTElBZ0xDUUFnQUNnQ1BCQU5DODRDQVFoL0l3QkJJR3NpQXlRQUlBTWdBQ2dDSENJRU5nSVFJQUFvQWhRaEJTQURJQUkyQWh3Z0F5QUJOZ0lZSUFNZ0JTQUVheUlCTmdJVUlBRWdBbW9oQlVFQ0lRWWdBMEVRYWlFQkFuOERRQUpBQWtBQ1FDQUFLQUk4SUFFZ0JpQURRUXhxRUFFaUJBUi9RWlRIQVNBRU5nSUFRWDhGUVFBTFJRUkFJQVVnQXlnQ0RDSUhSZzBCSUFkQkFFNE5BZ3dEQ3lBRlFYOUhEUUlMSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQUlBRWdBQ2dDTUdvMkFoQWdBZ3dEQ3lBQklBY2dBU2dDQkNJSVN5SUpRUU4wYWlJRUlBY2dDRUVBSUFrYmF5SUlJQVFvQWdCcU5nSUFJQUZCREVFRUlBa2JhaUlCSUFFb0FnQWdDR3MyQWdBZ0JTQUhheUVGSUFZZ0NXc2hCaUFFSVFFTUFRc0xJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDQUFLQUlBUVNCeU5nSUFRUUFnQmtFQ1JnMEFHaUFDSUFFb0FnUnJDeUVLSUFOQklHb2tBQ0FLQzFZQkFuOGdBQ2dDUENFRUl3QkJFR3NpQUNRQUlBUWdBYWNnQVVJZ2lLY2dBa0gvQVhFZ0FFRUlhaEFKSWdJRWYwR1V4d0VnQWpZQ0FFRi9CVUVBQ3lFQ0lBQXBBd2doQVNBQVFSQnFKQUJDZnlBQklBSWJDd1lBSUFBUUFBc0dBQ0FBRUFNTDhuNEZBbncyZndoN0EzNEdmU01BUWVEQUFHc2lHQ1FBSUJoQkFEWUNJRUVDSVF3Q1FBSkFJQUFvQWdBaUIwR05sSnpVQUVZTkFDQUhRZitmL1k4RlJ3UkFBa0FnQjBHQWdJRGdBRWNOQUNBQUtBSUVRZXFnZ1lFQ1J3MEFJQUFvQWdoQmpaU2MxQUJHRFFJTFFjMElFQUJCQVNFTURBSUxRUUFoREFzQ2YwRUFRUUZCNEFBUUV5SUhSUTBBR2lBSFFRRTJBa3dDUUFKQUFrQUNRQ0FNRGdNQUF3RURDeUFIUWNNQU5nSllJQWRCeEFBMkFsUWdCMEhGQURZQ1VDQUhRY1lBTmdJUUlBZEJ4d0EyQWdRZ0IwSElBRFlDSENBSFFja0FOZ0lZSUFkQnlnQTJBaFFnQjBITEFEWUNBQ0FIUWN3QU5nSmNJQWRCelFBMkFpd2dCMEhPQURZQ0tDQUhRYzhBTmdJa0lBZEIwQUEyQWlBZ0IwSFJBRFlDRENBSFFkSUFOZ0lJSUFjUVRTSUlOZ0l3SUFnTkFRd0NDeUFIUWRNQU5nSllJQWRCMUFBMkFsUWdCMEhWQURZQ1VDQUhRZFlBTmdJUUlBZEIxd0EyQWdRZ0IwSFlBRFlDWENBSFFka0FOZ0lzSUFkQjJnQTJBaWdnQjBIYkFEWUNKQ0FIUWR3QU5nSWdJQWRCM1FBMkFod2dCMEhlQURZQ0dDQUhRZDhBTmdJVUlBZEI0QUEyQWd3Z0IwSGhBRFlDQ0NBSFFlSUFOZ0lBSUFjQ2YwRUJRWWdCRUJNaUNBUkFJQWdRVFNJT05nSUFBa0FnRGtVTkFDQUkvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDYkNBSVFRQTZBSHdnQ0JBeklnNDJBZ1FnRGtVTkFDQUlFRE1pRGpZQ0NDQU9SUTBBSUFnTUFnc2dDQkJ3QzBFQUN5SUlOZ0l3SUFoRkRRRUxJQWRCQVRZQ1NDQUhRUUUyQWtBZ0IwRUFOZ0k4SUFkQ0FEY0NOQ0FIUVFFMkFrUWdCd3dCQ3lBSEVCQkJBQXNpQ0FSQUlBaEJBRFlDUENBSVFlTUFOZ0pJQ3lBSUJFQWdDRUVBTmdJNElBaEI1QUEyQWtRTElBZ0VRQ0FJUVFBMkFqUWdDRUhsQURZQ1FBc2dHRUVrYWlJSEJFQWdCMEVBUWJqQUFCQVZJZ2RCQURZQ3VFQWdCMEovTndLSVFBc2dBd1JBSUJnZ0dDZ0MzRUJCQVhJMkF0eEFDeUFZSUFFMkFod2dHQ0FBTmdJWUlCZ2dBRFlDRkVFQklReEJBQ0VCQWtBZ0dFRVVhaUlIUlEwQVFRRkJ5QUFRRXlJQUJIOENmeUFBUVlDQXdBQTJBa0FnQUVHQWdNQUFFQlFpRGpZQ0lDQU9SUVJBSUFBUUVFRUFEQUVMSUFBZ0RqWUNKQ0FBUVFJMkFod2dBRUVETmdJWUlBQkJCRFlDRkNBQVFRVTJBaEFnQUVFR05nSXNJQUJCQ0RZQ0tDQUFJQUFvQWtSQkFuSTJBa1FnQUFzRlFRQUxJZ0JGRFFBZ0FBUkFJQUJCQURZQ0JDQUFJQWMyQWdBTElBYzFBZ2doUlNBQUJFQWdBQ0JGTndNSUN3SkFJQUJGRFFBZ0FDMEFSRUVDY1VVTkFDQUFRVDgyQWhBTElBQUVRQ0FBUWNFQU5nSVlDeUFBQkVBZ0FFSENBRFlDSEFzZ0FDRUJDeUFCSVFBQ2Z5QVlRU1JxSVFFQ1FDQUlSUTBBSUFGRkRRQWdDQ2dDVEVVRVFDQUlRVFJxUVFGQnRNa0FRUUFRRDBFQURBSUxJQWdvQWpBZ0FTQUlLQUlZRVFNQVFRRWhDd3NnQ3d0RkJFQkIzQWdRQUNBQUVEUWdDQkExREFFTEFuOGdHRUVnYWlFQlFRQWhCd0pBSUFCRkRRQWdDRVVOQUNBSUtBSk1SUVJBSUFoQk5HcEJBVUdGeWdCQkFCQVBRUUFNQWdzZ0FDQUlLQUl3SUFFZ0NFRTBhaUFJS0FJQUVRRUFJUWNMSUFjTFJRUkFRZmdJRUFBZ0FCQTBJQWdRTlNBWUtBSWdFQ0VNQVFzZ0dDZ0NJQ0VCUVFBaEJ3SkFJQWhGRFFBZ0FFVU5BQ0FJS0FKTVJRMEFJQWdvQWpBZ0FDQUJJQWhCTkdvZ0NDZ0NCQkVCQUNFSEN3SkFJQWNFUUVFQUlRY0NRQ0FJUlEwQUlBQkZEUUFnQ0NnQ1RFVU5BQ0FJS0FJd0lBQWdDRUUwYWlBSUtBSVFFUUFBSVFjTElBY05BUXRCL3drUUFDQUlFRFVnQUJBMElCZ29BaUFRSVF3QkN5QUFFRFFnQ0JBMUlCZ29BaUFpRFNnQ0hDSUFCRUFnQUJBUUlCZ29BaUFpRFVJQU53SWNDeUFOS0FJUUlTRUNRQUpBSUFKRkJFQUNRQ0FFUlEwQUlDRkJCRWNOQUVFQklSbEJCQ0VoREFNTEFrQUNRQ0FOS0FJVUlnRkJBMFlOQUNBaFFRTkhEUUFnRFNnQ0dDSUFLQUlBSUFBb0FnUkhEUUVnQUNnQ05FRUJSZzBCSUExQkF6WUNGQXdEQ3lBaFFRSkxEUUFnRFVFQ05nSVVEQU1MQWtBQ1FDQUJRUU5yRGdNREFRQUVDeU1BUVJCcklnNGtBQUpBQWtBQ1FDQU5LQUlRUVFSSkRRQWdEU2dDR0NJQUtBSUFJZ0VnQUNnQ05FY05BQ0FCSUFBb0FtaEhEUUFnQVNBQUtBS2NBVWNOQUNBQUtBSUVJZ0VnQUNnQ09FY05BQ0FCSUFBb0FteEhEUUFnQVNBQUtBS2dBVVlOQVFzZ0RrR0hDRFlDQkNBT1FiZ0tOZ0lBUWVqRUFVSHRQU0FPRUJZTUFRc0NRQ0FBS0FJTUlBQW9BZ2hzSWdoRkJFQWdBQ2dDeUFFaEFRd0JDME1BQUlBL1FYOGdBQ2dDdEFGMFFYOXpzNVVoU0VNQUFJQS9RWDhnQUNnQ2dBRjBRWDl6czVVaFNrTUFBSUEvUVg4Z0FDZ0NUSFJCZjNPemxTRkxRd0FBZ0Q5QmZ5QUFLQUlZZEVGL2M3T1ZJVWtnQUNnQ3lBRWhBU0FBS0FLVUFTRUNJQUFvQW1BaENpQUFLQUlzSVFkQkFDRUFBa0FnQ0VFSVNRMEFJQWNnQ2lBSVFRSjBJZ3RxSWc5SklBb2dCeUFMYWlJWFNYRU5BQ0FDSUJkSklBY2dBaUFMYWlJSlNYRU5BQ0FCSUJkSklBY2dBU0FMYWlJTFNYRU5BQ0FDSUE5SklBa2dDa3R4RFFBZ0FTQVBTU0FLSUF0SmNRMEFJQUVnQ1VrZ0FpQUxTWEVOQUNBSVFYeHhJUUFnU1AwVElUMGdTdjBUSVQ0Z1MvMFRJVU1nU2YwVElVQkJBQ0VMQTBBZ0FpQUxRUUowSWc5cUloZjlBQUlBSVVFZ0NpQVBhaUlKL1FBQ0FDRkNJQWNnRDJvaUVQME1BQUNBUHdBQWdEOEFBSUEvQUFDQVB5QkFJQkQ5QUFJQS9mb0IvZVlCL2VVQi9Rd0FBSDlEQUFCL1F3QUFmME1BQUg5RC9lWUIvUXdBQUlBL0FBQ0FQd0FBZ0Q4QUFJQS9JRDBnQVNBUGF2MEFBZ0Q5K2dIOTVnSDk1UUVpUC8zbUFmMzRBZjBMQWdBZ0NmME1BQUNBUHdBQWdEOEFBSUEvQUFDQVB5QkRJRUw5K2dIOTVnSDk1UUg5REFBQWYwTUFBSDlEQUFCL1F3QUFmMFA5NWdFZ1AvM21BZjM0QWYwTEFnQWdGLzBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUErSUVIOStnSDk1Z0g5NVFIOURBQUFmME1BQUg5REFBQi9Rd0FBZjBQOTVnRWdQLzNtQWYzNEFmMExBZ0FnQzBFRWFpSUxJQUJIRFFBTElBQWdDRVlOQVFzRFFBSi9Rd0FBZ0Q4Z1NTQUhJQUJCQW5RaUMyb2lEeWdDQUxLVWswTUFBSDlEbEVNQUFJQS9JRWdnQVNBTGFpZ0NBTEtVa3lKTWxDSk5pME1BQUFCUFhRUkFJRTJvREFFTFFZQ0FnSUI0Q3lFWElBSWdDMm9pQ1NnQ0FDRVFJQW9nQzJvaUN5Z0NBQ0VNSUE4Z0Z6WUNBQ0FMQW45REFBQ0FQeUJMSUF5eWxKTkRBQUIvUTVRZ1RKUWlUWXREQUFBQVQxMEVRQ0JOcUF3QkMwR0FnSUNBZUFzMkFnQWdDUUovUXdBQWdEOGdTaUFRc3BTVFF3QUFmME9VSUV5VUlreUxRd0FBQUU5ZEJFQWdUS2dNQVF0QmdJQ0FnSGdMTmdJQUlBQkJBV29pQUNBSVJ3MEFDd3NnQVJBUUlBMG9BaGdpQUVFSU5nS0FBU0FBUVFnMkFrd2dBRUVJTmdJWUlBQkJBRFlDeUFFZ0RVRUJOZ0lVSUEwZ0RTZ0NFRUVCYXlJQU5nSVFJQUJCQkVrTkFFRURJUUFEUUNBTktBSVlJQUJCTkd4cUlnRWdBU2dDWkRZQ01DQUJJQUg5QUFKVS9Rc0NJQ0FCSUFIOUFBSkUvUXNDRUNBQklBSDlBQUkwL1FzQ0FDQUFRUUZxSWdBZ0RTZ0NFRWtOQUFzTElBNUJFR29rQUF3REN5TUFRUkJySWdza0FBSkFBa0FDUUNBTktBSVFRUU5KRFFBZ0RTZ0NHQ0lBS0FJQUlnRWdBQ2dDTkVjTkFDQUJJQUFvQW1oSERRQWdBQ2dDQkNJQklBQW9BamhIRFFBZ0FTQUFLQUpzUmcwQkN5QUxRY1VJTmdJRUlBdEJ1QW8yQWdCQjZNUUJRWmMrSUFzUUZnd0JDd0pBSUFBb0Fnd2dBQ2dDQ0d3aUFrVU5BRUYvSUFBb0FoZ2lDblJCZjNNaEFVRUFRUUVnQ2tFQmEzUWlDaUFBS0FLSUFSc2hEMEVBSUFvZ0FDZ0NWQnNoRnlBQUtBS1VBU0VLSUFBb0FtQWhCeUFBS0FJc0lRNUJBQ0VBQWtBZ0FrRUVTUTBBSUE0Z0J5QUNRUUowSWdocUlnbEpJQWNnQ0NBT2FpSVFTWEVOQUNBS0lCQkpJQTRnQ0NBS2FpSUlTWEVOQUNBSElBaEpJQWtnQ2t0eERRQWdBa0Y4Y1NFQUlBSDlFU0UvSUEvOUVTRkFJQmY5RVNGQlFRQWhDQU5BSUE0Z0NFRUNkQ0lKYWlJUUlEOGdDU0FLYWlJTS9RQUNBQ0JBL2JFQi9mb0JJajM5REdsMHN6OXBkTE0vYVhTelAybDBzei85NWdFZ0J5QUphaUlKL1FBQ0FDQkIvYkVCL2ZvQklqNzlETE5aR3JpeldScTRzMWthdUxOWkdyajk1Z0VnRVAwQUFnRDkrZ0VpUS8za0FmM2tBZjBNQUFBQVB3QUFBRDhBQUFBL0FBQUFQLzNrQWYzNEFTSkMvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvYmdCSUQ4Z1F2MDUvVkw5Q3dJQUlBa2dQeUE5L1F3WjBEYS9HZEEydnhuUU5yOFowRGEvL2VZQklFUDlETlVKZ0QvVkNZQS8xUW1BUDlVSmdELzk1Z0VnUHYwTUp6R3d2aWN4c0w0bk1iQytKekd3dnYzbUFmM2tBZjNrQWYwTUFBQUFQd0FBQUQ4QUFBQS9BQUFBUC8za0FmMzRBU0pDL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL2JnQklEOGdRdjA1L1ZMOUN3SUFJQXdnUHlBOS9ReTlOd2EzdlRjR3Q3MDNCcmU5TndhMy9lWUJJRVA5REdiMGZ6OW05SDgvWnZSL1AyYjBmei85NWdFZ1B2ME1OZExpUHpYUzRqODEwdUkvTmRMaVAvM21BZjNrQWYza0FmME1BQUFBUHdBQUFEOEFBQUEvQUFBQVAvM2tBZjM0QVNJOS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9iZ0JJRDhnUGYwNS9WTDlDd0lBSUFoQkJHb2lDQ0FBUncwQUN5QUFJQUpHRFFFTEEwQUNmeUFLSUFCQkFuUWlDR29pQ1NnQ0FDQVBhN0lpU0VOcGRMTS9sQ0FISUFocUloQW9BZ0FnRjJ1eUlrcERzMWthdUpRZ0NDQU9haUlNS0FJQXNpSkxrcEpEQUFBQVA1SWlTWXREQUFBQVQxMEVRQ0JKcUF3QkMwR0FnSUNBZUFzaENDQU1JQUVnQ0VFQUlBaEJBRW9iSUFFZ0NFZ2JOZ0lBSUJBZ0FRSi9JRWhER2RBMnY1UWdTMFBWQ1lBL2xDQktReWN4c0w2VWtwSkRBQUFBUDVJaVNZdERBQUFBVDEwRVFDQkpxQXdCQzBHQWdJQ0FlQXNpQ0VFQUlBaEJBRW9iSUFFZ0NFZ2JOZ0lBSUFrZ0FRSi9JRWhEdlRjR3Q1UWdTME5tOUg4L2xDQktRelhTNGorVWtwSkRBQUFBUDVJaVNJdERBQUFBVDEwRVFDQklxQXdCQzBHQWdJQ0FlQXNpQ0VFQUlBaEJBRW9iSUFFZ0NFZ2JOZ0lBSUFCQkFXb2lBQ0FDUncwQUN3c2dEVUVCTmdJVUN5QUxRUkJxSkFBTUFnc2dJU0FDSUFJZ0lVc2JJU0ZCQVNFWkRBRUxBa0FDUUFKL0FrQUNRQ0FOS0FJWUlnRW9BZ0JCQVVjTkFBSkFBa0FnQVNnQ05FRUJhdzRDQVFBQ0N5QUJLQUpvUVFKSERRRUNRQ0FCS0FJRVFRRkhEUUFnQVNnQ09FRUNSdzBBSUFFb0FteEJBa2NOQUVFQUlRc2dEU0lYS0FJWUlnQW9BaGdoQVNBQUtBS1VBU0VSSUFBb0FtQWhDaUFBS0FJc0lSQWdBQ2dDQ0NJTklBQW9BZ3dpQW14QkFuUWlBQkFZSVFjZ0FCQVlJUWdnQUJBWUlRNENRQUpBQWtBQ1FBSkFBa0FnQjBVTkFDQUlSUTBBSUE1RkRRQkJmeUFCZEVGL2N5RUpRUUVnQVVFQmEzUWhEQ0FDSUJjb0FnUkJBWEVpQUdzaEhpQVhLQUlBUVFGeElSc2dBRVVOQXlBTlJRMERBbjlCQUNBTWE3SzdJZ1ZFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2hGQUovSUFWRUp6RUlyQnhhL0QraUlnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEN5RWFJQTFCQ0VraE9BSi9JQVZFTzk5UGpaZHU5aitpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFZElEZ05BU0FJSUFkclFSQkpEUUVnRGlBSGEwRVFTUTBCSUFjZ0VHdEJFRWtOQVNBT0lBaHJRUkJKRFFFZ0NDQVFhMEVRU1EwQklBNGdFR3RCRUVrTkFTQU9JQTFCZkhFaUMwRUNkQ0lDYWlFQklBSWdCMm9oQUNBYS9SRWhQaUFVL1JFaFF5QUovUkVoUHlBZC9SRWhRQU5BSUFjZ0QwRUNkQ0lUYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBUUlCTnEvUUFDQUNJOUlFRDlyZ0VpUVNBLy9iWUJJRUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FJSUJOcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEMGdRLzJ4QVNKQklELzl0Z0VnUWYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUE0Z0UycjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdQU0ErL2E0QklqMGdQLzIyQVNBOS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVdjBMQWdBZ0QwRUVhaUlQSUF0SERRQUxJQUlnRUdvaEVDQUNJQWhxSVFJZ0N5QU5SZzBFREFJTElBY1FFQ0FJRUJBZ0RoQVFEQVFMSUFjaEFDQUlJUUlnRGlFQkN3TkFJQUFnRUNnQ0FDSVBJQjFxSWhNZ0NTQUpJQk5LRzBFQUlCTkJBRTRiTmdJQUlBSWdEeUFVYXlJVElBa2dDU0FUU2h0QkFDQVRRUUJPR3pZQ0FDQUJJQThnR21vaUR5QUpJQWtnRDBvYlFRQWdEMEVBVGhzMkFnQWdBVUVFYWlFQklBSkJCR29oQWlBQVFRUnFJUUFnRUVFRWFpRVFJQXRCQVdvaUN5QU5SdzBBQ3d3QkN5QU9JUUVnQ0NFQ0lBY2hBQXNnRFNBYmF5RWFBa0FnSGtGK2NTSWRCSDhDZjBFQUlBeHJzcnNpQlVScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVpSUJwQmZuRWlIRUVCYXlFNUFuOGdCVVFuTVFpc0hGcjhQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVNNZ09VRitjU0U2QW44Z0JVUTczMCtObDI3MlA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJU1FnSFVFQmF5RWxJRHBCQW1vaEppQU5RUUowSVEwRFFDQUJJQTFxSVE4Z0FpQU5haUVUSUFBZ0RXb2hDeUFOSUJCcUlSUWdHd1JBSUFBZ0VDZ0NBQ0lWSUNScUloSWdDU0FKSUJKS0cwRUFJQkpCQUU0Yk5nSUFJQUlnRlNBaWF5SVNJQWtnQ1NBU1NodEJBQ0FTUVFCT0d6WUNBQ0FCSUJVZ0kyb2lGU0FKSUFrZ0ZVb2JRUUFnRlVFQVRoczJBZ0FnQ2lnQ0FDRVdJQXNDZnlBUktBSUFJQXhyc3JzaUJVUTczMCtObDI3MlA2SWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJQlFvQWdBaUZXb2lFaUFKSUFrZ0Vrb2JRUUFnRWtFQVRoczJBZ0FnRXlBVkFuOGdGaUFNYTdLN0lnWkVhcngwa3hnRTFqK2lJQVZFREFJcmh4Ylo1aitpb0NJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF0ckloSWdDU0FKSUJKS0cwRUFJQkpCQUU0Yk5nSUFJQThDZnlBR1JDY3hDS3djV3Z3L29pSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2dGV29pRlNBSklBa2dGVW9iUVFBZ0ZVRUFUaHMyQWdBZ0QwRUVhaUVQSUJOQkJHb2hFeUFMUVFScUlRc2dGRUVFYWlFVUlBSkJCR29oQWlBUVFRUnFJUkFnQVVFRWFpRUJJQUJCQkdvaEFBdEJBQ0VWSUJ3RWZ3TkFJQW9vQWdBaEh5QUFBbjhnRVNnQ0FDQU1hN0s3SWdWRU85OVBqWmR1OWoraUlnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEN5QVFLQUlBSWhKcUloWWdDU0FKSUJaS0cwRUFJQlpCQUU0Yk5nSUFJQUlnRWdKL0lCOGdER3V5dXlJR1JHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMYXlJV0lBa2dDU0FXU2h0QkFDQVdRUUJPR3pZQ0FDQUJBbjhnQmtRbk1RaXNIRnI4UDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElCSnFJaElnQ1NBSklCSktHMEVBSUJKQkFFNGJOZ0lBSUFvb0FnQWhIeUFBQW44Z0VTZ0NBQ0FNYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFRS0FJRUloSnFJaFlnQ1NBSklCWktHMEVBSUJaQkFFNGJOZ0lFSUFJZ0VnSi9JQjhnREd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVdJQWtnQ1NBV1NodEJBQ0FXUVFCT0d6WUNCQ0FCQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQkpxSWhJZ0NTQUpJQkpLRzBFQUlCSkJBRTRiTmdJRUlBb29BZ0FoSHlBTEFuOGdFU2dDQUNBTWE3SzdJZ1ZFTzk5UGpaZHU5aitpSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0Q3lBVUtBSUFJaEpxSWhZZ0NTQUpJQlpLRzBFQUlCWkJBRTRiTmdJQUlCTWdFZ0ovSUI4Z0RHdXl1eUlHUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xheUlXSUFrZ0NTQVdTaHRCQUNBV1FRQk9HellDQUNBUEFuOGdCa1FuTVFpc0hGcjhQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSUJKcUloSWdDU0FKSUJKS0cwRUFJQkpCQUU0Yk5nSUFJQW9vQWdBaEh5QUxBbjhnRVNnQ0FDQU1hN0s3SWdWRU85OVBqWmR1OWoraUlnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEN5QVVLQUlFSWhKcUloWWdDU0FKSUJaS0cwRUFJQlpCQUU0Yk5nSUVJQk1nRWdKL0lCOGdER3V5dXlJR1JHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMYXlJV0lBa2dDU0FXU2h0QkFDQVdRUUJPR3pZQ0JDQVBBbjhnQmtRbk1RaXNIRnI4UDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElCSnFJaElnQ1NBSklCSktHMEVBSUJKQkFFNGJOZ0lFSUJGQkJHb2hFU0FLUVFScUlRb2dEMEVJYWlFUElCTkJDR29oRXlBTFFRaHFJUXNnRkVFSWFpRVVJQUZCQ0dvaEFTQUNRUWhxSVFJZ0FFRUlhaUVBSUJCQkNHb2hFQ0FWUVFKcUloVWdIRWtOQUFzZ0pnVkJBQXNnR2trRWZ5QUtLQUlBSVJZZ0FBSi9JQkVvQWdBZ0RHdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NBQ0lWYWlJU0lBa2dDU0FTU2h0QkFDQVNRUUJPR3pZQ0FDQUNJQlVDZnlBV0lBeHJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpRWlBSklBa2dFa29iUVFBZ0VrRUFUaHMyQWdBZ0FRSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBVmFpSVZJQWtnQ1NBVlNodEJBQ0FWUVFCT0d6WUNBQ0FLS0FJQUlSVWdDd0ovSUJFb0FnQWdER3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dGQ2dDQUNJTGFpSVVJQWtnQ1NBVVNodEJBQ0FVUVFCT0d6WUNBQ0FUSUFzQ2Z5QVZJQXhyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUV5QUpJQWtnRTBvYlFRQWdFMEVBVGhzMkFnQWdEd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUxhaUlMSUFrZ0NTQUxTaHRCQUNBTFFRQk9HellDQUNBUlFRUnFJUkVnQ2tFRWFpRUtJQUpCQkdvaEFpQVFRUVJxSVJBZ0FFRUVhaUVBSUFGQkJHb0ZJQUVMSUExcUlRRWdBaUFOYWlFQ0lBQWdEV29oQUNBTklCQnFJUkFnSUVFQ2FpSWdJQjFKRFFBTElDVkJmbkZCQW1vRlFRQUxJQjVQRFFBZ0d3UkFJQUFDZjBFQUlBeHJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQzJvaURTQUpJQWtnRFVvYlFRQWdEVUVBVGhzMkFnQWdBaUFMQW44Z0JVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0QzJzaURTQUpJQWtnRFVvYlFRQWdEVUVBVGhzMkFnQWdBUUovSUFWRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUxhaUlMSUFrZ0NTQUxTaHRCQUNBTFFRQk9HellDQUNBQ1FRUnFJUUlnRUVFRWFpRVFJQUZCQkdvaEFTQUFRUVJxSVFBTElCcEJmbkVpSUFSL0lDQkJBV3NpQzBGK2NTRTdBa0FDZjBFQUlDQkJEMGtOQUJwQkFDQUFJQUlnQzBFQmRpSVVRUU4wUVFocUloTnFJZ3RKSUFJZ0FDQVRhaUlOU1hFTkFCcEJBQ0FCSUExSklBQWdBU0FUYWlJUFNYRU5BQnBCQUNBQUlCQWdFMm9pRTBrZ0RTQVFTM0VOQUJwQkFDQUtJQTFKSUFBZ0NpQVVRUUowUVFScUloNXFJaHRKY1EwQUdrRUFJQTBnRVVzZ0FDQVJJQjVxSWcxSmNRMEFHa0VBSUFJZ0Qwa2dBU0FMU1hFTkFCcEJBQ0FDSUJOSklBc2dFRXR4RFFBYVFRQWdDaUFMU1NBQ0lCdEpjUTBBR2tFQUlBSWdEVWtnQ3lBUlMzRU5BQnBCQUNBQklCTkpJQThnRUV0eERRQWFRUUFnQ2lBUFNTQUJJQnRKY1EwQUdrRUFJQUVnRFVrZ0R5QVJTM0VOQUJvZ0NpQVVRUUZxSWhaQi9QLy8vd2R4SWh0QkFuUWlJbW9oQ3lBQklCdEJBM1FpSG1vaERTQUFJQjVxSVE4Z0NmMFJJVDhnRFAwUklVTkJBQ0VUQTBBZ0VDQVRRUU4wSWhSQkdISWlIV29pSXlBUUlCUkJFSElpSEdvaUpDQVFJQlJCQ0hJaUZXb2lKU0FRSUJScUlpYjlDUUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJVDBDZnlBUklCTkJBblFpSDJyOUFBSUFJRVA5c1FIOStnRWlQdjFmSWtEOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlRZjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEp5QUtJQjlxL1FBQ0FDRkNJQUFnRkdvaUgvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTlBbjhnUWYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FuL1J3QkFuOGdQaUErL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVFmME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0krL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUQ3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWtUOXJnRWlQaUEvL2JZQklENzlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWo3OVdnSUFBQ0FBSUJWcUlpY2dQdjFhQWdBQklBQWdIR29pS1NBKy9Wb0NBQUlnQUNBZGFpSXFJRDc5V2dJQUF3Si9JRUlnUS8yeEFmMzZBU0krL1Y4aVF2ME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0JBL1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJa0Q5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElTZ2dBaUFVYWlJci9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEMENmeUJBL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQ2o5SEFFQ2Z5QSsvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUVAwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQkIvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqNzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlRZjJ4QVNJK0lELzl0Z0VnUHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlQdjFhQWdBQUlBSWdGV29pS0NBKy9Wb0NBQUVnQWlBY2FpSXNJRDc5V2dJQUFpQUNJQjFxSWkwZ1B2MWFBZ0FEQW44Z1F2ME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0krL1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXVJQUVnRkdvaUZQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTlBbjhnUHYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0F1L1J3QkFuOGdRUDBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJOS9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lEMzlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElrRDlyZ0VpUFNBLy9iWUJJRDM5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqMzlXZ0lBQUNBQklCVnFJaFVnUGYxYUFnQUJJQUVnSEdvaUhDQTkvVm9DQUFJZ0FTQWRhaUlkSUQzOVdnSUFBeUFmL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNOQkJHb2dKRUVFYWlBbFFRUnFJQ2I5Q1FJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESWo0Z1JQMnVBU0k5SUQvOXRnRWdQZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaVBmMWFBZ1FBSUNjZ1BmMWFBZ1FCSUNrZ1BmMWFBZ1FDSUNvZ1BmMWFBZ1FESUN2OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1BpQkIvYkVCSWowZ1AvMjJBU0E5L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTkvVm9DQkFBZ0tDQTkvVm9DQkFFZ0xDQTkvVm9DQkFJZ0xTQTkvVm9DQkFNZ0ZQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQStJRUQ5cmdFaVBTQS8vYllCSUQzOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJajM5V2dJRUFDQVZJRDM5V2dJRUFTQWNJRDM5V2dJRUFpQWRJRDM5V2dJRUF5QVRRUVJxSWhNZ0cwY05BQXNnRVNBaWFpRVJJQkFnSG1vaEVDQUNJQjVxSVFJZ0ZpQWJSZ1JBSUE4aEFDQU5JUUVnQ3lFS0RBSUxJQThoQUNBTklRRWdDeUVLSUJ0QkFYUUxJUXNEUUNBS0tBSUFJUk1nQUFKL0lCRW9BZ0FnREd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0FDSU5haUlQSUFrZ0NTQVBTaHRCQUNBUFFRQk9HellDQUNBQ0lBMENmeUFUSUF4cnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lEeUFKSUFrZ0Qwb2JRUUFnRDBFQVRoczJBZ0FnQVFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFOYWlJTklBa2dDU0FOU2h0QkFDQU5RUUJPR3pZQ0FDQUtLQUlBSVJNZ0FBSi9JQkVvQWdBZ0RHdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NCQ0lOYWlJUElBa2dDU0FQU2h0QkFDQVBRUUJPR3pZQ0JDQUNJQTBDZnlBVElBeHJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpRHlBSklBa2dEMG9iUVFBZ0QwRUFUaHMyQWdRZ0FRSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBTmFpSU5JQWtnQ1NBTlNodEJBQ0FOUVFCT0d6WUNCQ0FSUVFScUlSRWdDa0VFYWlFS0lBRkJDR29oQVNBQ1FRaHFJUUlnQUVFSWFpRUFJQkJCQ0dvaEVDQUxRUUpxSWdzZ0lFa05BQXNMSUR0QkFtb0ZRUUFMSUJwUERRQWdDaWdDQUNFTElBQUNmeUFSS0FJQUlBeHJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQUdvaUNpQUpJQWtnQ2tvYlFRQWdDa0VBVGhzMkFnQWdBaUFBQW44Z0N5QU1hN0s3SWdaRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXRySWdJZ0NTQUNJQWxJRzBFQUlBSkJBRTRiTmdJQUlBRUNmeUFHUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzZ0FHb2lBQ0FKSUFBZ0NVZ2JRUUFnQUVFQVRoczJBZ0FMSUJjb0FoZ29BaXdRRUNBWEtBSVlJZ0FnQnpZQ0xDQUFLQUpnRUJBZ0Z5Z0NHQ0lBSUFnMkFtQWdBQ2dDbEFFUUVDQVhLQUlZSWdBZ0RqWUNsQUVnQUNBQS9RQUNBQ0kvL1FzQ2FDQUFJRC85Q3dJMElCZEJBVFlDRkFzTUJ3c2dBU2dDQkVFQlJ3MEJJQUVvQWpoQkFVY05BU0FCS0FKc1FRRkhEUUVnQVNnQ0dDRUFJQUVvQXBRQklRSWdBU2dDWUNFSElBRW9BaXdoRENBQktBSUlJZ29nQVNnQ0RDSVdiRUVDZENJQkVCZ2hEeUFCRUJnaEZ5QUJFQmdoQ1NBUFJRMEZJQmRGRFFVZ0NVVU5CU0FXQkVBZ0NpQU5LQUlBUVFGeEloOXJJU0lDZjBFQVFRRWdBRUVCYTNRaUZHdXl1eUlGUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJU2RCZnlBQWRDRThJQ0pCZm5FaUhVRUJheUlLUVFGMklnQkJBV29oSXdKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVwSUFwQmZuRWhDaUFBUVFKMElRZ2dBRUVEZENFQUlDTkJmSEVoR3lBOFFYOXpJUkVDZnlBRlJEdmZUNDJYYnZZL29pSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2hLaUFLUVFKcUlTUWdDRUVFYWlFbElBQkJDR29oSUNBYlFRSjBJU1lnRzBFRGRDRWVJQnRCQVhRaEVDQVIvUkVoUHlBVS9SRWhReUFkUVFkSklTZ2dEeUVLSUJjaEFDQUpJUTREUUNBZkJFQWdDaUFNS0FJQUlnRWdLbW9pQ0NBUklBZ2dFVWdiUVFBZ0NFRUFUaHMyQWdBZ0FDQUJJQ2RySWdnZ0VTQUlJQkZJRzBFQUlBaEJBRTRiTmdJQUlBNGdBU0FwYWlJQklCRWdBU0FSU0J0QkFDQUJRUUJPR3pZQ0FDQU9RUVJxSVE0Z0NrRUVhaUVLSUF4QkJHb2hEQ0FBUVFScUlRQUxBbjhDZnlBZFJRUkFJQWNoQVNBT0lRc2dDaUVJUVFBTUFRdEJBQ0VaQWtBQ1FDQW9EUUFnQ2lBQUlDQnFJZ0ZKSUFBZ0NpQWdhaUlJU1hFTkFDQUtJQTRnSUdvaUMwa2dDQ0FPUzNFTkFDQUtJQXdnSUdvaUdra2dDQ0FNUzNFTkFDQUhJQWhKSUFvZ0J5QWxhaUljU1hFTkFDQUNJQWhKSUFvZ0FpQWxhaUlJU1hFTkFDQUFJQXRKSUFFZ0RrdHhEUUFnQUNBYVNTQUJJQXhMY1EwQUlBQWdIRWtnQVNBSFMzRU5BQ0FBSUFoSklBRWdBa3R4RFFBZ0RpQWFTU0FMSUF4TGNRMEFJQTRnSEVrZ0J5QUxTWEVOQUNBQ0lBdEpJQWdnRGt0eERRQWdCeUFtYWlFQklBNGdIbW9oQ3lBS0lCNXFJUWdEUUNBTUlCbEJBM1FpR2tFWWNpSWNhaUlySUF3Z0drRVFjaUlWYWlJc0lBd2dHa0VJY2lJU2FpSXRJQXdnR21vaUx2MEpBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWhQUUovSUFJZ0dVRUNkQ0l2YXYwQUFnQWdRLzJ4QWYzNkFTSSsvVjhpUVAwTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSkIvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFd0lBY2dMMnI5QUFJQUlVSWdDaUFhYWlJdi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEMENmeUJCL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJREQ5SEFFQ2Z5QStJRDc5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlKQi9RdzczMCtObDI3MlB6dmZUNDJYYnZZLy9mSUJJajc5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0NBbjhnUHYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQU1pUlAydUFTSStJRC85dGdFZ1B2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpUHYxYUFnQUFJQW9nRW1vaU1DQSsvVm9DQUFFZ0NpQVZhaUl5SUQ3OVdnSUFBaUFLSUJ4cUlqTWdQdjFhQWdBREFuOGdRaUJEL2JFQi9mb0JJajc5WHlKQy9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRUQ5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlRUDBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaE1TQUFJQnBxSWpUOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1BRSi9JRUQ5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdNZjBjQVFKL0lENzlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDlYeUpBL1F4cXZIU1RHQVRXUDJxOGRKTVlCTlkvL2ZJQklFSDlEQXdDSzRjVzJlWS9EQUlyaHhiWjVqLzk4Z0g5OEFFaVB2MGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QSsvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0F5SkIvYkVCSWo0Z1AvMjJBU0ErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSSsvVm9DQUFBZ0FDQVNhaUl4SUQ3OVdnSUFBU0FBSUJWcUlqVWdQdjFhQWdBQ0lBQWdIR29pTmlBKy9Wb0NBQU1DZnlCQy9Rd25NUWlzSEZyOFB5Y3hDS3djV3Z3Ly9mSUJJajc5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElUY2dEaUFhYWlJYS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEMENmeUErL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJRGY5SEFFQ2Z5QkEvUXduTVFpc0hGcjhQeWN4Q0t3Y1d2dy8vZklCSWozOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndDQW44Z1BmMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFNaVFQMnVBU0k5SUQvOXRnRWdQZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaVBmMWFBZ0FBSUE0Z0Vtb2lFaUE5L1ZvQ0FBRWdEaUFWYWlJVklEMzlXZ0lBQWlBT0lCeHFJaHdnUGYxYUFnQURJQy85REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSzBFRWFpQXNRUVJxSUMxQkJHb2dMdjBKQWdUOVZnSUFBZjFXQWdBQy9WWUNBQU1pUGlCRS9hNEJJajBnUC8yMkFTQTkvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VWlJOS9Wb0NCQUFnTUNBOS9Wb0NCQUVnTWlBOS9Wb0NCQUlnTXlBOS9Wb0NCQU1nTlAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBK0lFSDlzUUVpUFNBLy9iWUJJRDM5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqMzlXZ0lFQUNBeElEMzlXZ0lFQVNBMUlEMzlXZ0lFQWlBMklEMzlXZ0lFQXlBYS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlENGdRUDJ1QVNJOUlELzl0Z0VnUGYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlQZjFhQWdRQUlCSWdQZjFhQWdRQklCVWdQZjFhQWdRQ0lCd2dQZjFhQWdRRElCbEJCR29pR1NBYlJ3MEFDeUFDSUNacUlRSWdEQ0FlYWlFTUlBQWdIbW9oQUNBUUlSa2dKQ0FiSUNOR0RRSWFEQUVMSUFvaENDQU9JUXNnQnlFQkN3TkFJQUVvQWdBaERpQUlBbjhnQWlnQ0FDQVVhN0s3SWdWRU85OVBqWmR1OWoraUlnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEN5QU1LQUlBSWdwcUlnY2dFU0FISUJGSUcwRUFJQWRCQUU0Yk5nSUFJQUFnQ2dKL0lBNGdGR3V5dXlJR1JHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMYXlJSElCRWdCeUFSU0J0QkFDQUhRUUJPR3pZQ0FDQUxBbjhnQmtRbk1RaXNIRnI4UDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElBcHFJZ29nRVNBS0lCRklHMEVBSUFwQkFFNGJOZ0lBSUFFb0FnQWhEaUFJQW44Z0FpZ0NBQ0FVYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFNS0FJRUlncHFJZ2NnRVNBSElCRklHMEVBSUFkQkFFNGJOZ0lFSUFBZ0NnSi9JQTRnRkd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SUhJQkVnQnlBUlNCdEJBQ0FIUVFCT0d6WUNCQ0FMQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQXBxSWdvZ0VTQUtJQkZJRzBFQUlBcEJBRTRiTmdJRUlBSkJCR29oQWlBQlFRUnFJUUVnQzBFSWFpRUxJQUJCQ0dvaEFDQUlRUWhxSVFnZ0RFRUlhaUVNSUJsQkFtb2lHU0FkU1EwQUN5QWtDeUFpVHdSQUlBRWhCeUFJSVFvZ0N3d0JDeUFCS0FJQUlRNGdDQUovSUFJb0FnQWdGR3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dEQ2dDQUNJS2FpSUhJQkVnQnlBUlNCdEJBQ0FIUVFCT0d6WUNBQ0FBSUFvQ2Z5QU9JQlJyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUJ5QVJJQWNnRVVnYlFRQWdCMEVBVGhzMkFnQWdDd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUthaUlLSUJFZ0NpQVJTQnRCQUNBS1FRQk9HellDQUNBQ1FRUnFJUUlnQVVFRWFpRUhJQUJCQkdvaEFDQUlRUVJxSVFvZ0RFRUVhaUVNSUF0QkJHb0xJUTRnRTBFQmFpSVRJQlpIRFFBTEN5QU5LQUlZS0FJc0VCQWdEU2dDR0NJQUlBODJBaXdnQUNnQ1lCQVFJQTBvQWhnaUFDQVhOZ0pnSUFBb0FwUUJFQkFnRFNnQ0dDSUFJQWsyQXBRQklBQWdBUDBBQWdBaVAvMExBbWdnQUNBLy9Rc0NOQ0FOUVFFMkFoUkJBQ0VaREFZTElBRW9BbWhCQVVjTkFDQUJLQUlFUVFGSERRQWdBU2dDT0VFQlJ3MEFJQUVvQW14QkFVY05BQ0FCS0FJWUlRSWdBU2dDbEFFaENDQUJLQUpnSVF3Z0FTZ0NMQ0VBSUFFb0Fnd2dBU2dDQ0d3aUYwRUNkQ0lCRUJnaEJ5QUJFQmdoRHlBQkVCZ2hEZ0pBSUFkRkRRQWdEMFVOQUNBT1JRMEFJQmRGRFFSQmZ5QUNkRUYvY3lFWlFRRWdBa0VCYTNRaEVTQVhRUWhKRFFJZ0R5QUhhMEVRU1EwQ0lBNGdCMnRCRUVrTkFpQUhJQUJyUVJCSkRRSWdCeUFNYTBFUVNRMENJQWNnQ0d0QkVFa05BaUFPSUE5clFSQkpEUUlnRHlBQWEwRVFTUTBDSUE4Z0RHdEJFRWtOQWlBUElBaHJRUkJKRFFJZ0RpQUFhMEVRU1EwQ0lBNGdER3RCRUVrTkFpQU9JQWhyUVJCSkRRSWdDQ0FYUVh4eElncEJBblFpQ1dvaEN5QUpJQTVxSVFFZ0J5QUphaUVDSUJuOUVTRS9JQkg5RVNFOUEwQUNmeUFJSUJOQkFuUWlFR3I5QUFJQUlEMzlzUUg5K2dFaVB2MWZJa0Q5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaVFmMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoRkNBTUlCQnEvUUFDQUNGQ0lBY2dFR3I5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUNBUWF2MEFBZ0FpUXdKL0lFSDlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ0ZQMGNBUUovSUQ0Z1B2ME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMWZJajc5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaVFmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QkIvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0EvMnVBU0pCSUQvOXRnRWdRZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFBbjhnUWlBOS9iRUIvZm9CSWtIOVh5SkMvUXhxdkhTVEdBVFdQMnE4ZEpNWUJOWS8vZklCSUVEOURBd0NLNGNXMmVZL0RBSXJoeGJaNWovOThnSDk4QUVpUVAwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2hGQ0FQSUJCcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlFTUNmeUJBL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQlQ5SEFFQ2Z5QkIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUVAwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQSsvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqNzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBUDlzUUVpUGlBLy9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQUovSUVMOURDY3hDS3djV3Z3L0p6RUlyQnhhL0QvOThnRWlQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEZDQU9JQkJxL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVNQ2Z5QSsvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wUklCVDlIQUVDZnlCQS9Rd25NUWlzSEZyOFB5Y3hDS3djV3Z3Ly9mSUJJajc5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0NBbjhnUHYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQVA5cmdFaVBpQS8vYllCSUQ3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVMvUXNDQUNBVFFRUnFJaE1nQ2tjTkFBc2dDaUFYUmcwRUlBa2dER29oRENBQUlBbHFJUUFnQ1NBUGFnd0RDeUFIRUJBZ0R4QVFJQTRRRUF3RkN5QVlRYmtETmdJRUlCaEJ1QW8yQWdCQjZNUUJRY0krSUJnUUZnd0VDeUFISVFJZ0RpRUJJQWdoQ3lBUEN5RUlBMEFnRENnQ0FDRVRJQUlDZnlBTEtBSUFJQkZyc3JzaUJVUTczMCtObDI3MlA2SWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJQUFvQWdBaUNXb2lFQ0FaSUJBZ0dVZ2JRUUFnRUVFQVRoczJBZ0FnQ0NBSkFuOGdFeUFSYTdLN0lnWkVhcngwa3hnRTFqK2lJQVZFREFJcmh4Ylo1aitpb0NJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF0ckloQWdHU0FRSUJsSUcwRUFJQkJCQUU0Yk5nSUFJQUVDZnlBR1JDY3hDS3djV3Z3L29pSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2dDV29pQ1NBWklBa2dHVWdiUVFBZ0NVRUFUaHMyQWdBZ0FVRUVhaUVCSUFoQkJHb2hDQ0FDUVFScUlRSWdDMEVFYWlFTElBeEJCR29oRENBQVFRUnFJUUFnQ2tFQmFpSUtJQmRIRFFBTEN5QU5LQUlZS0FJc0VCQWdEU2dDR0NJQUlBYzJBaXdnQUNnQ1lCQVFJQTBvQWhnaUFDQVBOZ0pnSUFBb0FwUUJFQkFnRFNnQ0dDQU9OZ0tVQVNBTlFRRTJBaFJCQUNFWkRBRUxJQThRRUNBWEVCQWdDUkFRQ3lBWUtBSWdJUUFDUUNBRERRQWdJVVVOQUNBQUtBSVlJUTVCQUNFVEEwQWdEaUFUUVRSc2FpSURLQUlZSWdKQkNFY0VRQUpBSUFKQkIwMEVRQ0FES0FJTUlBTW9BZ2hzSVFFZ0F5Z0NMQ0VLSUFNb0FpQUVRQ0FCUlEwQ1FRRWdBa0VCYTNTdElVVkJBQ0VISUFGQkJFOEVRQ0FCUVh4eElRY2dSZjBTSVQ5QkFDRU1BMEFnQ2lBTVFRSjBhaUlDSUFMOUFBSUFJajM5eHdGQkIvM0xBU0krL1IwQUlELzlIUUFpUm4vOUVpQSsvUjBCSUQvOUhRRWlSMy85SGdFZ1BTQS8vUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvY2NCUVFmOXl3RWlQZjBkQUNCR2YvMFNJRDM5SFFFZ1IzLzlIZ0g5RFFBQkFnTUlDUW9MRUJFU0V4Z1pHaHY5Q3dJQUlBeEJCR29pRENBSFJ3MEFDeUFCSUFkR0RRTUxBMEFnQ2lBSFFRSjBhaUlDSUFJMEFnQkNCNFlnUlg4K0FnQWdCMEVCYWlJSElBRkhEUUFMREFJTElBRkZEUUZCZnlBQ2RFRi9jNjBoUlVFQUlRY2dBVUVFVHdSQUlBRkJmSEVoQnlCRi9SSWhQMEVBSVF3RFFDQUtJQXhCQW5ScUlnSWdBdjBBQWdBaVBmM0pBZjBNL3dBQUFBQUFBQUQvQUFBQUFBQUFBUDNWQVNJKy9SMEFJRC85SFFBaVJvRDlFaUErL1IwQklELzlIUUVpUjREOUhnRWdQU0EvL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NrQi9Rei9BQUFBQUFBQUFQOEFBQUFBQUFBQS9kVUJJajM5SFFBZ1JvRDlFaUE5L1IwQklFZUEvUjRCL1EwQUFRSURDQWtLQ3hBUkVoTVlHUm9iL1FzQ0FDQU1RUVJxSWd3Z0IwY05BQXNnQVNBSFJnMENDd05BSUFvZ0IwRUNkR29pQWlBQ05RSUFRdjhCZmlCRmdENENBQ0FIUVFGcUlnY2dBVWNOQUFzTUFRc2dBa0VJYXlFS0lBTW9BZ3dnQXlnQ0NHd2hBU0FES0FJc0lRZ2dBeWdDSUFSQUlBRkZEUUZCQUNFSElBRkJCRThFUUNBQlFYeHhJUWRCQUNFQ0EwQWdDQ0FDUVFKMGFpSUxJQXY5QUFJQUlBcjlyQUg5Q3dJQUlBSkJCR29pQWlBSFJ3MEFDeUFCSUFkR0RRSUxBMEFnQ0NBSFFRSjBhaUlDSUFJb0FnQWdDblUyQWdBZ0IwRUJhaUlISUFGSERRQUxEQUVMSUFGRkRRQkJBQ0VISUFGQkJFOEVRQ0FCUVh4eElRZEJBQ0VDQTBBZ0NDQUNRUUowYWlJTElBdjlBQUlBSUFyOXJRSDlDd0lBSUFKQkJHb2lBaUFIUncwQUN5QUJJQWRHRFFFTEEwQWdDQ0FIUVFKMGFpSUNJQUlvQWdBZ0NuWTJBZ0FnQjBFQmFpSUhJQUZIRFFBTEN5QURRUWcyQWhnTElCTkJBV29pRXlBaFJ3MEFDd3NnQUNnQ0RDQUFLQUlJYkNFQkFrQWdHVVVFUUNBQUtBSVVRUUpHQkVBZ0FDZ0NFRUVCUmdSQUlBQW9BaGdvQWl3Z0FSQU9EQU1MSUFSRkRRSWdBQ2dDR0NJQUtBSXNJQUFvQW1BZ0FSQUlEQUlMSUFBb0FoZ2lBQ2dDTENBQUtBSmdJQUFvQXBRQklBRVFCd3dCQ3dKQUFrQUNRQ0FoUVFGckRnUUFBd0VDQXdzZ0FDZ0NHQ2dDTENBQkVBWU1BZ3NnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBQ2dDbEFFZ0FSQUZEQUVMSUFBb0FoZ2lBQ2dDTENBQUtBSmdJQUFvQXBRQklBQW9Bc2dCSUFFUUJBc2dHQ2dDSUJBaFFRQWhEQXNnR0VIZ3dBQnFKQUFnREFzSUFFRUlJQUFRSlF1ckFnSUNmZ0ovUW44aEF5QUFMUUJFUVFoeFJRUkFJQUFnQUNnQ0lDSUdOZ0lrQWtBQ1FBSkFJQUFnQUNnQ01DSUZCSDhEUUNBR0lBVWdBQ2dDQUNBQUtBSVVFUUFBSWdWQmYwWU5BaUFBSUFBb0FpUWdCV29pQmpZQ0pDQUFJQUFvQWpBZ0JXc2lCVFlDTUNBRkRRQUxJQUFvQWlBRklBWUxOZ0lrSUFGQ0FGVU5BVUlBSVFNTUFnc2dBQ0FBS0FKRVFRaHlOZ0pFSUFKQkJFR0I5UUJCQUJBUElBQkJBRFlDTUNBQUlBQW9Ba1JCQ0hJMkFrUkNmdzhMUWdBaEF3TkFJQUVnQUNnQ0FDQUFLQUlZRVFzQUlnUkNmMUVFUUNBQ1FRUkI4dlFBUVFBUUR5QUFJQUFvQWtSQkNISTJBa1FnQUNBQUtRTTRJQU44TndNNFFuOGdBeUFEVUJzUEN5QURJQVI4SVFNZ0FTQUVmU0lCUWdCVkRRQUxDeUFBSUFBcEF6Z2dBM3czQXpnTElBTUxJd0VCZnlBQklBRW9BZ0FnQVNnQ0NDSUJJQUNuSWdJZ0FTQUNTUnRxTmdJRVFRRUxQQUlDZndGK0lBRW9BZ0FnQVNnQ0NHb2lBeUFCS0FJRUlnSkdCRUJDZnc4TElBRWdBaUFBcDJvMkFnUWdBeUFDYTZ3aUJDQUFJQUFnQkZVYkM1Z0RBZ0orQW44Z0FDZ0NNQ0lGSUFHbklnWlBCRUFnQUNBRklBWnJOZ0l3SUFBZ0FDZ0NKQ0FHYWpZQ0pDQUFJQUFwQXpnZ0FYdzNBemdnQVE4TElBQXRBRVJCQkhFRVFDQUFRUUEyQWpBZ0FDQUFLQUlrSUFWcU5nSWtJQUFnQmEwaUFTQUFLUU00ZkRjRE9DQUJRbjhnQlJzUEN3SkFJQVZGQkVBTUFRc2dBRUVBTmdJd0lBQWdBQ2dDSURZQ0pDQUJJQVd0SWdOOUlRRUxJQUZDQUZVRVFBTkFJQUFwQXdnZ0FDa0RPQ0FCSUFOOGZGUUVRQ0FDUVFSQm0vVUFRUUFRRHlBQVFRQTJBakFnQUNBQUtBSWdOZ0lrSUFBZ0FDa0RPQ0FEZkNJRE53TTRJQUFwQXdnaUFTQURmU0VFSUFFZ0FDZ0NBQ0FBS0FJY0VRb0FJUVVnQUNnQ1JDRUNJQUFnQlFSL0lBQWdBVGNET0NBQ1FYdHhCU0FDQzBFRWNqWUNSRUovSUFRZ0FTQURVUnNQQ3lBQklBQW9BZ0FnQUNnQ0dCRUxBQ0lFUW45UkJFQWdBa0VFUVp2MUFFRUFFQThnQUNBQUtBSkVRUVJ5TmdKRUlBQWdBQ2tET0NBRGZEY0RPRUovSUFNZ0ExQWJEd3NnQXlBRWZDRURJQUVnQkgwaUFVSUFWUTBBQ3dzZ0FDQUFLUU00SUFOOE53TTRJQU1MbXdFQkJYOUJBU0FDS0FJSUlnY2dCMEVCVFJzaEJDQUNLQUlFSWdNZ0FpZ0NBR3NoQmdOQUlBUWlCVUVCZENFRUlBVWdCbXNnQVVrTkFBc2dCU0FIUndSQUlBVVFGQ0lEUlFSQVFYOFBDeUFDS0FJQUlnUUVRQ0FESUFRZ0JoQVNHaUFDS0FJQUVCQUxJQUlnQlRZQ0NDQUNJQU0yQWdBZ0FpQURJQVpxSWdNMkFnUUxJQU1nQUNBQkVCSWFJQUlnQWlnQ0JDQUJhallDQkNBQkMwWUJBbjhnQWlnQ0FDQUNLQUlJYWlJRUlBSW9BZ1FpQTBZRVFFRi9Ed3NnQUNBRElBUWdBMnNpQUNBQklBQWdBVWtiSWdBUUVob2dBaUFDS0FJRUlBQnFOZ0lFSUFBTHFnSUJCSDhqQUVFUWF5SUVKQUFDUUNBQUtBSjBEUUFnQWtFQlRRUkFJQU5CQVVIN3dnQkJBQkFQREFFTElBRWdCRUVNYWtFQ0VCRWdCQ2dDRENJR1FmLy9BM0VpQjBVRVFDQURRUUZCbk1NQVFRQVFEd3dCQ3lBQ0lBZEJCbXhCQW1wSkJFQWdBMEVCUWZ2Q0FFRUFFQThNQVFzZ0JrRUdiQkFVSWdORkRRQWdBRUVJRUJRaUFqWUNkQ0FDUlFSQUlBTVFFQXdCQ3lBQ0lBTTJBZ0FnQWlBRUx3RU1JZ0k3QVFRZ0FrVUVRRUVCSVFVTUFRdEJBQ0VDQTBBZ0FVRUNhaUFFUVF4cUlnVkJBaEFSSUFNZ0FrRUdiR29pQmlBRUtBSU1Pd0VBSUFGQkJHb2dCVUVDRUJFZ0JpQUVLQUlNT3dFQ0lBRkJCbW9pQVNBRlFRSVFFU0FHSUFRb0FndzdBUVJCQVNFRklBSkJBV29pQWlBQUtBSjBMd0VFU1EwQUN3c2dCRUVRYWlRQUlBVUw4QUVCQlg4akFFRVFheUlFSkFBQ2Z5QUFLQUo0SWdWRkJFQWdBMEVCUWMzQ0FFRUFFQTlCQUF3QkN5QUZLQUlNQkVBZ0EwRUJRZHZWQUVFQUVBOUJBQXdCQ3lBQ0lBVXRBQklpQlVFQ2RDSUdTUVJBSUFOQkFVR3N3Z0JCQUJBUFFRQU1BUXRCQUNBR0VCUWlBa1VOQUJvZ0JRUkFRUUFoQXdOQUlBRWdCRUVNYWlJSFFRSVFFU0FDSUFOQkFuUnFJZ1lnQkNnQ0REc0JBQ0FCUVFKcUlBZEJBUkFSSUFZZ0JDZ0NERG9BQWlBQlFRTnFJQWRCQVJBUklBWWdCQ2dDRERvQUF5QUJRUVJxSVFFZ0EwRUJhaUlESUFWSERRQUxDeUFBS0FKNElBSTJBZ3hCQVFzaENDQUVRUkJxSkFBZ0NBdndBd0VKZnlNQVFSQnJJZ1VrQUFKQUlBSkJBMGtOQUNBQUtBSjREUUFnQVNBRlFReHFRUUlRRVNBRkx3RU1JZ2xCZ1FoclFmOTNUUVJBSUFVZ0NUWUNBQ0FEUVFGQnRCb2dCUkFQREFFTElBRkJBbW9nQlVFTWFrRUJFQkVnQlM4QkRDSUlSUVJBSUFOQkFVSFVGMEVBRUE4TUFRc2dDRUVEYWlBQ1N3MEFJQWdnQ1d4QkFuUVFGQ0lIUlEwQUlBZ1FGQ0lLUlFSQUlBY1FFQXdCQ3lBSUVCUWlDMFVFUUNBSEVCQWdDaEFRREFFTFFSUVFGQ0lHUlFSQUlBY1FFQ0FLRUJBZ0N4QVFEQUVMSUFGQkEyb2hBeUFHSUFvMkFnZ2dCaUFMTmdJRUlBWWdDVHNCRUNBR0lBYzJBZ0FnQlNnQ0RDRU1JQVpCQURZQ0RDQUdJQXc2QUJJZ0FDQUdOZ0o0QTBBZ0F5QUZRUXhxUVFFUUVTQUVJQXBxSUFVdEFBeEIvd0J4UVFGcU9nQUFJQVFnQzJvZ0JTZ0NERUdBQVhGQkIzWTZBQUFnQTBFQmFpRURJQVJCQVdvaUJDQUlSdzBBQ3lBSlJRUkFRUUVoQkF3QkMwRUFJUVlEUUVFQUlRUkJBQ0VBQTBBZ0FrRUVJQVFnQ21vdEFBQkJCMnBCQTNZaUJDQUVRUVJQR3lJRUlBTWdBV3RxU0FSQVFRQWhCQXdEQ3lBRElBVkJER29nQkJBUklBY2dCU2dDRERZQ0FDQUhRUVJxSVFjZ0F5QUVhaUVESUFCQkFXb2lBRUgvL3dOeElnUWdDRWtOQUF0QkFTRUVJQVpCQVdvaUJrSC8vd054SUFsSkRRQUxDeUFGUVJCcUpBQWdCQXVZQVFFQ2Z5TUFRUkJySWdVa0FDQUFLQUlZSWdSQi93RkhCRUFnQlNBRU5nSUFJQU5CQWtIa0V5QUZFQThMQWtBQ1FDQUNJQUFvQWhSR0JFQWdBZzBCUVFFaEJBd0NDMEVBSVFRZ0EwRUJRYnZzQUVFQUVBOE1BUXRCQUNFQ0EwQkJBU0VFSUFFZ0FDZ0NTQ0FDUVF4c2FrRUlha0VCRUJFZ0FVRUJhaUVCSUFKQkFXb2lBaUFBS0FJVVNRMEFDd3NnQlVFUWFpUUFJQVFMamdZQkJuOGpBRUhRQUdzaUJDUUFBa0FnQWtFQ1RRUkFJQU5CQVVHYjdBQkJBQkFQREFFTElBQXRBSHdFUUNBRFFRUkI3dElBUVFBUUQwRUJJUVlNQVF0QkFTRUdJQUVnQUVFb2FrRUJFQkVnQVVFQmFpQUFRVFJxUVFFUUVTQUJRUUpxSUFCQkxHcEJBUkFSSUFGQkEyb2hCUUpBQWtBQ1FBSkFBa0FnQUNnQ0tDSUhRUUZyRGdJQUFRSUxJQUpCQmswRVFDQUVJQUkyQWhBZ0EwRUJRY0R4QUNBRVFSQnFFQTlCQUNFR0RBVUxBa0FnQWtFSFJnMEFJQUFvQWpCQkRrWU5BQ0FFSUFJMkFqQWdBMEVDUWNEeEFDQUVRVEJxRUE4TElBVWdBRUV3YWtFRUVCRWdBQ2dDTUVFT1J3MERRU1FRRkNJRlJRUkFRUUFoQmlBRFFRRkJzenhCQUJBUERBVUxJQVZCRGpZQ0FDQUVRUUEyQWtBZ0JFRUFOZ0k0SUFSQkFEWUNTQ0FFUVFBMkFqd2dCRUVBTmdKRUlBUkJBRFlDVEVHdzZwQUNJUVlnQkVHdzZwQUNOZ0kwSUFWQmdJeVZvZ1EyQWdRQ2Z5QUNRUWRIQkVBZ0FrRWpSZ1JBSUFGQkIyb2dCRUhNQUdwQkJCQVJJQUZCQzJvZ0JFSElBR3BCQkJBUklBRkJEMm9nQkVIRUFHcEJCQkFSSUFGQkUyb2dCRUZBYTBFRUVCRWdBVUVYYWlBRVFUeHFRUVFRRVNBQlFSdHFJQVJCT0dwQkJCQVJJQUZCSDJvZ0JFRTBha0VFRUJFZ0JVRUFOZ0lFSUFRb0FqUWhCaUFFS0FJNElRSWdCQ2dDUUNFRElBUW9BandoQnlBRUtBSkVJUWdnQkNnQ1RDRUpJQVFvQWtnTUFnc2dCQ0FDTmdJZ0lBTkJBa0hrOFFBZ0JFRWdhaEFQQzBFQUlRSkJBQ0VEUVFBaEIwRUFDeUVCSUFVZ0J6WUNHQ0FGSUFnMkFoQWdCU0FKTmdJSUlBVWdCallDSUNBRklBSTJBaHdnQlNBRE5nSVVJQVVnQVRZQ0RDQUFRUUEyQW5BZ0FDQUZOZ0pzREFNTElBQWdBa0VEYXlJQk5nSndJQUJCQVNBQkVCTWlBellDYkNBRFJRMEJJQUpCQTB3TkFrRUFJUUlEUUNBRklBUkJ6QUJxUVFFUUVTQUFLQUpzSUFKcUlBUW9Ba3c2QUFBZ0JVRUJhaUVGSUFKQkFXb2lBaUFCUncwQUN3d0NDeUFIUVFOSkRRSWdCQ0FITmdJQUlBTkJCRUhiOXdBZ0JCQVBEQUlMUVFBaEJpQUFRUUEyQW5BTUFRdEJBU0VHSUFCQkFUb0FmQXNnQkVIUUFHb2tBQ0FHQzdRREFRTi9Jd0JCSUdzaUJDUUFBa0FnQUNnQ1NBUkFJQU5CQWtHTk5VRUFFQTlCQVNFQ0RBRUxJQUpCRGtjRVFFRUFJUUlnQTBFQlFmcnJBRUVBRUE4TUFRc2dBU0FBUVJCcVFRUVFFU0FCUVFScUlBQkJER3BCQkJBUklBRkJDR29nQUVFVWFrRUNFQkVnQUNnQ0RDRUZBa0FnQkFKL0lBQW9BaEFpQmtVRVFDQUFLQUlVREFFTElBQW9BaFFpQWlBRlJRMEFHaUFDRFFGQkFBczJBZ2dnQkNBR05nSUVJQVFnQlRZQ0FDQURRUUZCM3VvQUlBUVFEMEVBSVFJTUFRc2dBa0dCZ0FGclFmLy9mazBFUUVFQUlRSWdBMEVCUVlqcUFFRUFFQThNQVFzZ0FDQUNRUXdRRXlJQ05nSklJQUpGQkVCQkFDRUNJQU5CQVVHdDZnQkJBQkFQREFFTFFRRWhBaUFCUVFwcUlBQkJHR3BCQVJBUklBRkJDMm9nQUVFY2FrRUJFQkVnQUNnQ0hDSUZRUWRIQkVBZ0JDQUZOZ0lRSUFOQkJFR2QrZ0FnQkVFUWFoQVBDeUFCUVF4cUlBQkJJR3BCQVJBUklBRkJEV29nQUVFa2FrRUJFQkVnQUNnQ0FDSUJJQUV0QUx3QlFmc0JjU0FBS0FJWVFmOEJSa0VDZEhJNkFMd0JJQUFvQWdBaUFTQUFLQUlNTmdMWUFTQUJJQUFvQWhBMkF0d0JJQUJCQVRvQWhRRUxJQVJCSUdva0FDQUNDN29FQVFaL0l3QkJFR3NpQmlRQUFuOGdBQzBBWkVFQ2NVVUVRQ0FEUVFGQmtkUUFRUUFRRDBFQURBRUxJQUJCQURZQ2FBSkFBa0FDUUNBQ0JFQURRQ0FDUVFkTkJFQWdBMEVCUWJrWlFRQVFEd3dGQ3lBQklBWkJER29pQlVFRUVCRWdCaWdDRENFRUlBRkJCR29nQlVFRUVCRkJDQ0VISUFZb0Fnd2hCUUpBQWtBQ1FBSkFJQVFPQWdFQUF3c2dBa0VRU1FSQVFlRVpJUVFNQndzZ0FVRUlhaUFHUVFocVFRUVFFU0FHS0FJSUJFQkJ5ajhoQkF3SEN5QUJRUXhxSUFaQkRHcEJCQkFSSUFZb0Fnd2lCQTBCUWJJWUlRUU1CZ3NnQTBFQlFiSVlRUUFRRHd3R0MwRVFJUWNMSUFRZ0Iwa0VRQ0FEUVFGQmhjVUFRUUFRRHd3RkN5QUNJQVJKQkVBZ0EwRUJRYjNFQUVFQUVBOUJBQXdHQ3dKQUFrQWdBQ0FCSUFkcUlBUWdCMnNnQXdKL0FrQUNRQUpBSUFWQjhkaTltd1pNQkVBZ0JVSGp4c0dUQmtZTkFTQUZRZWJLa1pzR1JnMERJQVZCOE1LMW13WkhEUVZCNE1BQkRBUUxJQVZCOHRpTmd3ZEdEUUZCd01BQklBVkI4c2loeXdaR0RRTWFJQVZCOHRpOW13WkhEUVJCeU1BQkRBTUxRZERBQVF3Q0MwSFl3QUVNQVF0QjZNQUJDeWdDQkJFQkFBMEJRUUFNQndzZ0FDQUFLQUpvUWYvLy8vOEhjallDYUF0QkFTQUlJQVZCOHNpaHl3WkdHeUVJSUFFZ0JHb2hBU0FDSUFScklnSU5BQXNnQ0EwQkN5QURRUUZCMmNNQVFRQVFEMEVBREFNTElBQkJBVG9BaEFFZ0FDQUFLQUprUVFSeU5nSmtRUUVNQWdzZ0EwRUJJQVJCQUJBUEN5QURRUUZCbmc1QkFCQVBRUUFMSVFrZ0JrRVFhaVFBSUFrTDRnRUJBWDhnQUNnQ1pFRUJSd1JBSUFOQkFVRysxQUJCQUJBUFFRQVBDd0pBSUFKQkIwMEVRQXdCQ3lBQklBQkJPR3BCQkJBUklBRkJCR29nQUVFOGFrRUVFQkVnQWtFRGNRUkFEQUVMSUFBZ0FrRUlheUlDUVFKMklnUTJBa0FDUUNBQ1JRMEFJQUFnQkVFRUVCTWlBallDUkNBQ1JRUkFJQU5CQVVHcEVFRUFFQTlCQUE4TElBQW9Ba0JGRFFBZ0FVRUlhaUVEUVFBaEFnTkFJQU1nQUNnQ1JDQUNRUUowYWtFRUVCRWdBMEVFYWlFRElBSkJBV29pQWlBQUtBSkFTUTBBQ3dzZ0FDQUFLQUprUVFKeU5nSmtRUUVQQ3lBRFFRRkJxaTFCQUJBUFFRQUx4QUVCQW44Z0FDQUFLQUlnSWdRMkFpUUNRQ0FBS0FJd0lnTUVRQU5BSUFRZ0F5QUFLQUlBSUFBb0FoUVJBQUFpQTBGL1JnMENJQUFnQUNnQ0pDQURhaUlFTmdJa0lBQWdBQ2dDTUNBRGF5SUROZ0l3SUFNTkFBc2dBQ2dDSUNFRUN5QUFRUUEyQWpBZ0FDQUVOZ0lrSUFFZ0FDZ0NBQ0FBS0FJY0VRb0FSUVJBSUFBZ0FDZ0NSRUVJY2pZQ1JFRUFEd3NnQUNBQk53TTRRUUVQQ3lBQUlBQW9Ba1JCQ0hJMkFrUWdBa0VFUVlIMUFFRUFFQThnQUNBQUtBSkVRUWh5TmdKRVFRQUxnZ0VCQW44akFFRVFheUlFSkFBQ2Z5QUFLQUprQkVBZ0EwRUJRZHZUQUVFQUVBOUJBQXdCQ3lBQ1FRUkhCRUFnQTBFQlFjNHRRUUFRRDBFQURBRUxJQUVnQkVFTWFrRUVFQkVnQkNnQ0RFR0tqcXJvQUVjRVFDQURRUUZCOWlWQkFCQVBRUUFNQVFzZ0FDQUFLQUprUVFGeU5nSmtRUUVMSVFVZ0JFRVFhaVFBSUFVTERRQWdBQ2dDQUNBQklBSVFSUXNKQUNBQUtBSUFFRW9MQ1FBZ0FDZ0NBQkJKQ3cwQUlBQW9BZ0FnQVNBQ0VFd0xRUUVCZnlBQ0JIOGdBMEVDUWR2TEFFRUFFQThnQUNnQ0FDQUJJQUlnQXlBRUVFWkZCRUFnQTBFQlFha3ZRUUFRRDBFQUR3c2dBQ0FDSUFNUWNRVkJBQXNMRlFBZ0FDZ0NBQ0FCSUFJZ0F5QUVJQVVnQmhCT0N3OEFJQUFvQWdBZ0FTQUNJQU1RVHdzVEFDQUFLQUlBSUFFZ0FpQURJQVFnQlJBckN4MEFJQUFvQWdBZ0FTQUNJQU1nQkNBRklBWWdCeUFJSUFrZ0NoQW5DK29FQVFkL0FrQWdBU2dDQ0VFMUlBTVFKRVVOQUNBQktBSUVJZ2NvQWdBaEJTQUhLQUlJSVFRQ1FDQUZCRUJCQVNFR0lBVkJBVWNFUUNBRlFYNXhJUW9EUUFKL1FRQWdCa1VOQUJwQkFDQUJJQUFnQXlBRUtBSUFFUUFBUlEwQUdpQUJJQUFnQXlBRUtBSUVFUUFBUVFCSEN5RUdJQVJCQ0dvaEJDQUpRUUpxSWdrZ0NrY05BQXNMQWtBZ0JVRUJjUVJBSUFaRkRRRWdBU0FBSUFNZ0JDZ0NBQkVBQUVFQVJ5RUdDeUFIUVFBMkFnQWdCa1VOQXd3Q0N5QUhRUUEyQWdCQkFBOExJQWRCQURZQ0FBc2dBU2dDQ0NJSEtBSUFJUVVnQnlnQ0NDRUVBa0FDUUFKL0FrQWdCUVJBUVFFaEJpQUZRUUZ4SVFnZ0JVRUJSdzBCUVFBTUFnc2dCMEVBTmdJQURBSUxJQVZCZm5FaEJVRUFJUWtEUUFKL1FRQWdCa1VOQUJwQkFDQUJJQUFnQXlBRUtBSUFFUUFBUlEwQUdpQUJJQUFnQXlBRUtBSUVFUUFBUVFCSEN5RUdJQVJCQ0dvaEJDQUpRUUpxSWdrZ0JVY05BQXNnQmtVTElRVWdDQVJBSUFVTkFpQUJJQUFnQXlBRUtBSUFFUUFBUVFCSElRWUxJQWRCQURZQ0FFRUFJUWdnQmtVTkFnc2dBUzBBaEFGRkJFQWdBMEVCUWIzV0FFRUFFQTlCQUE4TElBRXRBSVVCUlFSQUlBTkJBVUdnMWdCQkFCQVBRUUFQQ3lBQUlBRW9BZ0FnQWlBREVGQWhDQ0FDUlEwQklBSW9BZ0FpQUVVTkFVRUJJUVFDUUFKQUFrQUNRQUpBQWtBZ0FTZ0NNRUVNYXc0TkF3UUVCQVVBQVFRRUJBUUVBZ1FMUVFJaEJBd0VDMEVESVFRTUF3dEJCQ0VFREFJTFFRVWhCQXdCQzBGL0lRUUxJQUFnQkRZQ0ZDQUJLQUpzSWdORkRRRWdBQ0FETmdJY0lBSW9BZ0FnQVNnQ2NEWUNJQ0FCUVFBMkFtd2dDQThMSUFkQkFEWUNBRUVBSVFnTElBZ0w1QWtDQ244QmZpTUFRZkFBYXlJREpBQkJnQWdoQ0FKL0FrQkJBVUdBQ0JBVElnWUVRQ0FEUWR3QWFpRUxJQU5CN0FCcUlRa0RRQUpBQWtBQ1FDQUJJQU5CNkFCcUlnUkJDQ0FDRUJwQkNFY05BQ0FFSUFOQjJBQnFRUVFRRVNBSklBdEJCQkFSUVFnaEJRSkFBa0FDUUFKQUFrQWdBeWdDV0E0Q0FBRUVDeUFCS1FNSUlnMVFCSDVDQUFVZ0RTQUJLUU00ZlFzaURVTDQvLy8vRDFNTkFTQUNRUUZCeWo5QkFCQVBEQVFMSUFFZ0EwSG9BR29pQkVFSUlBSVFHa0VJUncwRElBUWdBMEhrQUdwQkJCQVJJQU1vQW1SRkRRRWdBa0VCUWNvL1FRQVFEd3dEQ3lBRElBMm5RUWhxTmdKWURBRUxJQWtnQTBIWUFHcEJCQkFSUVJBaEJRc2dBeWdDWENJRVFlUGt3Tk1HUmdSQUlBQW9BbVFpQVVFRWNRUkFJQUFnQVVFSWNqWUNaQXdDQ3lBQ1FRRkJyU3RCQUJBUElBWVFFRUVBREFjTElBTW9BbGdpQjBVRVFDQUNRUUZCc2hoQkFCQVBJQVlRRUVFQURBY0xJQVVnQjBzRVFDQURJQVEyQWdRZ0F5QUhOZ0lBSUFKQkFVSDY1d0FnQXhBUERBWUxBa0FDZndKL0FrQUNmd0pBQWtBQ1FBSkFBa0FnQkVIeDJMMmJCa3dFUUNBRVFlUEd3Wk1HUmcwQ0lBUkI1c3FSbXdaR0RRUWdCRUh3d3JXYkJrY05BVUhnd0FFTUJnc2dCRUdmd01EU0Jrd0VRQ0FFUWZMWXZac0dSZzBGUWNEQUFTQUVRZkxJb2NzR1JnMEdHaUFFUWZEeTBiTUdSdzBCUWFqQUFRd0lDeUFFUWZMWWpZTUhSZzBDSUFSQm9NREEwZ1pHRFFaQnNNQUJJQVJCNk9UQTB3WkdEUWNhQ3lBQUtBSmtJZ1JCQVhFTkNDQUNRUUZCL0E1QkFCQVBJQVlRRUVFQURBOExRZERBQVF3REMwSFl3QUVNQWd0QjZNQUJEQUVMUWNqQUFRc2hDaUFESUFSQi93RnhOZ0pNSUFNZ0JFRVlkallDUUNBRElBUkJDSFpCL3dGeE5nSklJQU1nQkVFUWRrSC9BWEUyQWtRZ0FrRUNRY2tPSUFOQlFHc1FEeUFISUFWcklnVWdBQzBBWkVFRWNRMENHaUFESUFNb0Fsd2lCRUVZZGpZQ01DQURJQVJCL3dGeE5nSThJQU1nQkVFUWRrSC9BWEUyQWpRZ0F5QUVRUWgyUWY4QmNUWUNPQ0FDUVFKQjJqTWdBMEV3YWhBUElBQWdBQ2dDWkVILy8vLy9CM0kyQW1RZ0FTQUZyU0lOSUFJZ0FTZ0NLQkVJQUNBTlVRMEhJQUpCQVVHU0hFRUFFQThnQmhBUVFRQU1DZ3RCb01BQkN5RUtJQWNnQldzTElRVWdBU2tEQ0NJTlVBUitRZ0FGSUEwZ0FTa0RPSDBMSUFXdFV3UkFJQU1vQWxnaEJDQURLQUpjSVFBZ0F5QUJLUU1JSWcxUUJINUNBQVVnRFNBQktRTTRmUXMrQWlnZ0F5QUZOZ0lrSUFNZ0FFSC9BWEUyQWlBZ0F5QUFRUmgyTmdJVUlBTWdCRFlDRUNBRElBQkJDSFpCL3dGeE5nSWNJQU1nQUVFUWRrSC9BWEUyQWhnZ0FrRUJRYzMxQUNBRFFSQnFFQThNQndzZ0JTQUlUUVJBSUFZaEJBd0VDeUFGSVFnZ0JpQUZFQmNpQkEwRElBWVFFQ0FDUVFGQi93OUJBQkFQUVFBTUJ3c2dCRUVDY1VVRVFDQUNRUUZCd2c5QkFCQVBJQVlRRUVFQURBY0xJQUFnQkVILy8vLy9CM0kyQW1RZ0FTQUhJQVZyclNJTklBSWdBU2dDS0JFSUFDQU5VUTBESUFBdEFHUkJDSEZGRFFFZ0FrRUNRWkljUVFBUUR3c2dCaEFRUVFFTUJRc2dBa0VCUVpJY1FRQVFEeUFHRUJCQkFBd0VDeUFCSUFRZ0JTQUNFQm9nQlVjRVFDQUNRUUZCeEJ4QkFCQVBJQVFRRUVFQURBUUxJQUFnQkNJR0lBVWdBaUFLS0FJRUVRRUFEUUFMSUFRUUVFRUFEQUlMSUFKQkFVR2lKVUVBRUE5QkFBd0JDeUFHRUJCQkFBc2hEQ0FEUWZBQWFpUUFJQXdMNWdFQkJuOGdBQ2dDQ0VFMUlBSVFKQVJBQWtBZ0FDZ0NDQ0lHS0FJQUlRTWdCaWdDQ0NFRkFrQUNRQUovQWtBZ0F3UkFRUUVoQkNBRFFRRnhJUWNnQTBFQlJ3MEJRUUFNQWdzZ0JrRUFOZ0lBREFJTElBTkJmbkVoQXdOQUFuOUJBQ0FFUlEwQUdrRUFJQUFnQVNBQ0lBVW9BZ0FSQUFCRkRRQWFJQUFnQVNBQ0lBVW9BZ1FSQUFCQkFFY0xJUVFnQlVFSWFpRUZJQWhCQW1vaUNDQURSdzBBQ3lBRVJRc2hBeUFIQkVBZ0F3MENJQUFnQVNBQ0lBVW9BZ0FSQUFCQkFFY2hCQXNnQmtFQU5nSUFJQVJGRFFJTElBQW9BZ0FhUVFFUEN5QUdRUUEyQWdBTEMwRUFDd29BSUFBb0FnQWFRUUFMRkFBZ0FDZ0NBQ0lBQkVBZ0FDQUJOZ0s0QVFzTElRQWdBQ2dDQUNBQkVGTWdBRUVBT2dCOElBQWdBU2dDdUVCQkFYRTJBb0FCQ3pJQUlBSkZCRUJCQUE4TElBQW9BZ0FnQVNBQ0lBTVFTRVVFUUNBRFFRRkJxUzlCQUJBUFFRQVBDeUFBSUFJZ0F4QnhDMmtDQW44QmZDTUFRUkJySWdNa0FDQUNCRUFEUUNBQUlBTkJDR29RUkNBQkFuOGdBeXNEQ0NJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzMkFnQWdBVUVFYWlFQklBQkJDR29oQUNBRVFRRnFJZ1FnQWtjTkFBc0xJQU5CRUdva0FBdUVBUUlDZndGOUl3QkJFR3NpQXlRQUlBSUVRQU5BSUFNZ0FDMEFBRG9BRHlBRElBQXRBQUU2QUE0Z0F5QUFMUUFDT2dBTklBTWdBQzBBQXpvQURDQUJBbjhnQXlvQ0RDSUZpME1BQUFCUFhRUkFJQVdvREFFTFFZQ0FnSUI0Q3pZQ0FDQUJRUVJxSVFFZ0FFRUVhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMwc0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBQ0FEUVF4cVFRUVFFU0FCSUFNb0FndzJBZ0FnQVVFRWFpRUJJQUJCQkdvaEFDQUVRUUZxSWdRZ0FrY05BQXNMSUFOQkVHb2tBQXRMQVFKL0l3QkJFR3NpQXlRQUlBSUVRQU5BSUFBZ0EwRU1ha0VDRUJFZ0FTQURLQUlNTmdJQUlBRkJCR29oQVNBQVFRSnFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTFNnRUNmeU1BUVJCcklnTWtBQ0FDQkVBRFFDQUFJQU5CQ0dvUVJDQUJJQU1yQXdpMk9BSUFJQUZCQkdvaEFTQUFRUWhxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxhQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FESUFBdEFBQTZBQThnQXlBQUxRQUJPZ0FPSUFNZ0FDMEFBam9BRFNBRElBQXRBQU02QUF3Z0FTQURLZ0lNT0FJQUlBRkJCR29oQVNBQVFRUnFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTFRBRUNmeU1BUVJCcklnTWtBQ0FDQkVBRFFDQUFJQU5CREdwQkJCQVJJQUVnQXlnQ0RMTTRBZ0FnQVVFRWFpRUJJQUJCQkdvaEFDQUVRUUZxSWdRZ0FrY05BQXNMSUFOQkVHb2tBQXRNQVFKL0l3QkJFR3NpQXlRQUlBSUVRQU5BSUFBZ0EwRU1ha0VDRUJFZ0FTQURLQUlNc3pnQ0FDQUJRUVJxSVFFZ0FFRUNhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUM2b0lBZzEvQVhzakFFRVFheUlJSkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDbkFFZ0FDZ0N6QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUpBa0FnQWtVRVFDQURRUUZCOEI5QkFCQVBEQUVMSUFBb0FrZ2hCa0VCSVFRZ0FTQUlRUWhxUVFFUUVTQUlLQUlJSWdWQkFrOEVRQ0FEUVFKQnhzZ0FRUUFRRHd3QkN5QUNJQVZCQVdwSEJFQkJBQ0VFSUFOQkFrSHdIMEVBRUE4TUFRc0NRQ0FHS0FJUUlnTkZEUUFnQ1NnQzBDc2hCQ0FEUVFoUEJFQWdBMEY0Y1NFR1FRQWhBZ05BSUFSQkFEWUN2RU1nQkVFQU5nS0VPeUFFUVFBMkFzd3lJQVJCQURZQ2xDb2dCRUVBTmdMY0lTQUVRUUEyQXFRWklBUkJBRFlDN0JBZ0JFRUFOZ0swQ0NBRVFjRERBR29oQkNBQ1FRaHFJZ0lnQmtjTkFBc0xJQU5CQjNFaUEwVU5BRUVBSVFJRFFDQUVRUUEyQXJRSUlBUkJ1QWhxSVFRZ0FrRUJhaUlDSUFOSERRQUxDeUFKS0FMb0t5SUNCSDhnQWhBUUlBbEJBRFlDNkNzZ0NDZ0NDQVVnQlF0RkJFQkJBU0VFREFFTEEwQWdBVUVCYWlJQklBaEJER3BCQVJBUkFrQWdDU2dDZ0N4RkRRQWdDU2dDL0NzaUF5Z0NBQ0FJS0FJTVJ3MEFJQU1vQWdRaUJTQUFLQUpJSWdZb0FoQkhEUUFnQXlnQ0NDSUNCRUJCQUNFRUlBSW9BaEFnQlNBRmJDSUZJQUlvQWdCQkFuUkIwTDBCYWlnQ0FHeEhEUU1nQ1NBRlFRSjBFQlFpQnpZQzZDc2dCMFVOQXlBQ0tBSU1JQWNnQlNBQ0tBSUFRUUowUVlEQUFXb29BZ0FSQlFBTElBTW9BZ3dpQWtVTkFFRUFJUVFnQWlnQ0VDQUdLQUlRSWdNZ0FpZ0NBRUVDZEVIUXZRRnFLQUlBYkVjTkFpQURRUUowRUJRaUJVVU5BaUFDS0FJTUlBVWdBeUFDS0FJQVFRSjBRWkRBQVdvb0FnQVJCUUFDUUNBR0tBSVFJZ2RGRFFBZ0NTZ0MwQ3NoQkVFQUlRc0NRQUpBSUFkQkJFa05BQ0FFUWJRSWFpSU1JQVVnQjBFQ2RHcEpCRUFnQlNBRUlBZEJ1QWhzYWtrTkFRc2dCRUhjSVdvaERTQUVRYVFaYWlFT0lBUkI3QkJxSVE4Z0JTQUhRWHh4SWdaQkFuUnFJUUlnQkNBR1FiZ0liR29oQkVFQUlRTURRQ0FNSUFOQnVBaHNJZ3BxSUFVZ0EwRUNkR3I5QUFJQUloSDlXZ0lBQUNBS0lBOXFJQkg5V2dJQUFTQUtJQTVxSUJIOVdnSUFBaUFLSUExcUlCSDlXZ0lBQXlBRFFRUnFJZ01nQmtjTkFBc2dCaUFIUmcwQ0RBRUxJQVVoQWtFQUlRWUxJQWNnQmlJRGEwRUhjU0lLQkVBRFFDQUVJQUlvQWdBMkFyUUlJQU5CQVdvaEF5QUVRYmdJYWlFRUlBSkJCR29oQWlBTFFRRnFJZ3NnQ2tjTkFBc0xJQVlnQjJ0QmVFc05BQU5BSUFRZ0FpZ0NBRFlDdEFnZ0JDQUNLQUlFTmdMc0VDQUVJQUlvQWdnMkFxUVpJQVFnQWlnQ0REWUMzQ0VnQkNBQ0tBSVFOZ0tVS2lBRUlBSW9BaFEyQXN3eUlBUWdBaWdDR0RZQ2hEc2dCQ0FDS0FJY05nSzhReUFFUWNEREFHb2hCQ0FDUVNCcUlRSWdBMEVJYWlJRElBZEhEUUFMQ3lBRkVCQUxRUUVoQkNBUVFRRnFJaEFnQ0NnQ0NFa05BQXNMSUFoQkVHb2tBQ0FFQ3dRQVFuOEx2d2tCQzM4akFFRVFheUlGSkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDbkFFZ0FDZ0N6QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUhBbjhnQWtFQlRRUkFJQU5CQVVIWUkwRUFFQTlCQUF3QkN5QUJJQVZCREdwQkFoQVJJQVVvQWd3RVFDQURRUUpCOEN4QkFCQVBRUUVNQVFzZ0FrRUdUUVJBSUFOQkFVSFlJMEVBRUE5QkFBd0JDeUFCUVFKcUlBVkJDR3BCQVJBUklBY29BdndySWdraEFBSkFBa0FDUUNBSEtBS0FMQ0lHUlEwQUlBVW9BZ2doQ0FOQUlBQW9BZ0FnQ0VZTkFTQUFRUlJxSVFBZ0JFRUJhaUlFSUFaSERRQUxEQUVMSUFRZ0JrY05BUXNnQnlnQ2hDd2dCa1lFZnlBSElBWkJDbW9pQURZQ2hDd2dDU0FBUVJSc0VCY2lBRVVFUUNBSEtBTDhLeEFRSUFkQkFEWUNoQ3dnQjBJQU53TDhLeUFEUVFGQjhpTkJBQkFQUVFBTUF3c2dCeUFBTmdMOEt5QUFJQWNvQW9Bc0lnUkJGR3hxUVFBZ0J5Z0NoQ3dnQkd0QkZHd1FGUm9nQnlnQy9Dc2hDU0FIS0FLQUxBVWdCZ3RCRkd3Z0NXb2hBRUVCSVFzTElBQWdCU2dDQ0RZQ0FDQUJRUU5xSUFWQkRHcEJBaEFSSUFVb0Fnd0VRQ0FEUVFKQjhDeEJBQkFQUVFFTUFRc2dBVUVGYWlBRlFRUnFRUUlRRVNBRktBSUVJZ1JCQWs4RVFDQURRUUpCcUJkQkFCQVBRUUVNQVFzZ0FrRUhheUVHSUFRRVFDQUJRUWRxSVFKQkFDRUpBMEFnQmtFQ1RRUkFJQU5CQVVIWUkwRUFFQTlCQUF3REN5QUNJQVZCREdwQkFSQVJJQVVvQWd4QkFVY0VRQ0FEUVFKQnNpcEJBQkFQUVFFTUF3c2dBa0VCYWlBRlFRSVFFU0FBSUFVb0FnQWlCRUgvL3dGeElnRTJBZ1FnQmtFRGF5SUlJQVJCRDNaQkFXb2lCaUFCYkVFQ2FpSUtTUVJBSUFOQkFVSFlJMEVBRUE5QkFBd0RDeUFDUVFOcUlRSkJBQ0VFSUFFRVFBTkFJQUlnQlVFTWFpQUdFQkVnQkNBRktBSU1Sd1JBSUFOQkFrSGFMMEVBRUE5QkFRd0ZDeUFDSUFacUlRSWdCRUVCYWlJRUlBQW9BZ1JKRFFBTEN5QUNJQVZCQWhBUklBVWdCU2dDQUNJRVFmLy9BWEVpQVRZQ0FDQUFLQUlFSUFGSEJFQWdBMEVDUWRnWVFRQVFEMEVCREFNTElBZ2dDbXNpQ2lBRVFROTJRUUZxSWdZZ0FXeEJBMm9pREVrRVFDQURRUUZCMkNOQkFCQVBRUUFNQXdzZ0FrRUNhaUVDUVFBaEJDQUJCRUFEUUNBQ0lBVkJER29nQmhBUklBUWdCU2dDREVjRVFDQURRUUpCMmk5QkFCQVBRUUVNQlFzZ0FpQUdhaUVDSUFSQkFXb2lCQ0FBS0FJRVNRMEFDd3NnQWlBRlFReHFRUU1RRVNBRktBSU1JUVlnQUVJQU53SUlJQUFnQmtHQWdBUnhSU0FBTFFBUVFmNEJjWEk2QUJBZ0JTQUdRZjhCY1NJSU5nSUlBa0FnQ0VVTkFDQUhLQUwwS3lJTkJFQWdCeWdDOENzaEJFRUFJUUVEUUNBSUlBUW9BZ2hHQkVBZ0FDQUVOZ0lJREFNTElBUkJGR29oQkNBQlFRRnFJZ0VnRFVjTkFBc0xJQU5CQVVIWUkwRUFFQTlCQUF3REN5QUZJQVpCQ0haQi93RnhJZ1kyQWdnQ1FDQUdSUTBBSUFjb0F2UXJJZ2dFUUNBSEtBTHdLeUVFUVFBaEFRTkFJQVlnQkNnQ0NFWUVRQ0FBSUFRMkFnd01Bd3NnQkVFVWFpRUVJQUZCQVdvaUFTQUlSdzBBQ3dzZ0EwRUJRZGdqUVFBUUQwRUFEQU1MSUFvZ0RHc2hCaUFDUVFOcUlRSWdDVUVCYWlJSklBVW9BZ1JKRFFBTEN5QUdCRUFnQTBFQlFkZ2pRUUFRRDBFQURBRUxRUUVnQzBVTkFCb2dCeUFIS0FLQUxFRUJhallDZ0N4QkFRc2hEaUFGUVJCcUpBQWdEZ3YxQVFFRmZ5TUFRUkJySWdRa0FBSkFJQUlnQUNnQ1NDZ0NFQ0lHUVFKcVJ3UkFJQU5CQVVId0lrRUFFQThNQVFzZ0FTQUVRUXhxUVFJUUVTQUdJQVFvQWd4SEJFQWdBMEVCUWZBaVFRQVFEd3dCQ3lBR1JRUkFRUUVoQlF3QkN5QUJRUUpxSVFJZ0FDZ0NTQ2dDR0NFQVFRQWhBUU5BSUFJZ0JFRUlha0VCRUJFZ0FDQUVLQUlJSWdWQi93QnhJZ2RCQVdvaUNEWUNHQ0FBSUFWQkIzWkJBWEUyQWlBZ0IwRWZUd1JBSUFRZ0NEWUNCQ0FFSUFFMkFnQWdBMEVCUWJmekFDQUVFQTlCQUNFRkRBSUxJQUJCTkdvaEFFRUJJUVVnQWtFQmFpRUNJQUZCQVdvaUFTQUdSdzBBQ3dzZ0JFRVFhaVFBSUFVTG1BVUJDbjhqQUVFUWF5SUhKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFRkFuOGdBa0VCVFFSQUlBTkJBVUh4SGtFQUVBOUJBQXdCQ3lBQklBZEJER3BCQWhBUkFrQWdCeWdDREFSQUlBTkJBa0dHRzBFQUVBOE1BUXNnQWtFR1RRUkFJQU5CQVVIeEhrRUFFQTlCQUF3Q0N5QUJRUUpxSUFkQkRHcEJBaEFSSUFVb0F2QXJJUVFnQnkwQURDRUtBa0FDUUFKQUlBVW9BdlFySWdaRkJFQWdCQ0VBREFFTElBUWhBQU5BSUFBb0FnZ2dDa1lOQVNBQVFSUnFJUUFnQ0VFQmFpSUlJQVpIRFFBTERBRUxJQVlnQ0VjTkFRc2dCU2dDK0NzZ0JrWUVRQ0FGSUFaQkNtb2lBRFlDK0NzZ0JDQUFRUlJzRUJjaEFDQUZLQUx3S3lFRUlBQkZCRUFnQkJBUUlBVkJBRFlDK0NzZ0JVSUFOd0x3S3lBRFFRRkJpeDlCQUJBUFFRQU1CQXNDUUNBQUlBUkdEUUFnQlNnQ2dDd2lDMFVOQUNBRktBTDhLeUVNUVFBaENBTkFJQXdnQ0VFVWJHb2lCaWdDQ0NJSkJFQWdCaUFBSUFrZ0JHdHFOZ0lJQ3lBR0tBSU1JZ2tFUUNBR0lBQWdDU0FFYTJvMkFnd0xJQWhCQVdvaUNDQUxSdzBBQ3dzZ0JTQUFOZ0x3S3lBQUlBVW9BdlFySWdSQkZHeHFRUUFnQlNnQytDc2dCR3RCRkd3UUZSb2dCU2dDOUNzaEJpQUZLQUx3S3lFRUN5QUZJQVpCQVdvMkF2UXJJQVFnQmtFVWJHb2hBQXNnQUNnQ0RDSUVCRUFnQkJBUUlBQkNBRGNDREFzZ0FDQUtOZ0lJSUFBZ0J5Z0NEQ0lFUVFwMlFRTnhOZ0lBSUFBZ0JFRUlka0VEY1RZQ0JDQUJRUVJxSUFkQkRHcEJBaEFSSUFjb0Fnd0VRQ0FEUVFKQnZSWkJBQkFQREFFTElBQWdBa0VHYXlJQ0VCUWlCRFlDRENBRVJRUkFJQU5CQVVIeEhrRUFFQTlCQUF3Q0N5QUVJQUZCQm1vZ0FoQVNHaUFBSUFJMkFoQUxRUUVMSVEwZ0IwRVFhaVFBSUEwTEp3QkJBU0VCSUFJZ0FDZ0NTQ2dDRUVFQ2RFY0VmeUFEUVFGQjF5RkJBQkFQUVFBRlFRRUxDNnNEQVFWL0l3QkJFR3NpQmlRQUFuOGdBa0VCVFFSQUlBTkJBVUg5SFVFQUVBOUJBQXdCQ3lBQUxRQzhBVUVCY1FSQUlBTkJBVUdKM2dCQkFCQVBRUUFNQVFzZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWlJQUlBQXRBSWdzUVFKeU9nQ0lMQ0FCSUFaQkRHcEJBUkFSQWtBZ0FDZ0NyQ2dpQkVVRVFDQUFJQVlvQWd4QkFXb2lCVUVJRUJNaUJEWUNyQ2dnQkVVRVFDQURRUUZCbHg1QkFCQVBRUUFNQXdzZ0FDQUZOZ0tvS0F3QkN5QUdLQUlNSWdVZ0FDZ0NxQ2hKRFFBZ0JDQUZRUUZxSWdSQkEzUVFGeUlGUlFSQUlBTkJBVUdYSGtFQUVBOUJBQXdDQ3lBQUlBVTJBcXdvSUFVZ0FDZ0NxQ2dpQjBFRGRHcEJBQ0FFSUFkclFRTjBFQlVhSUFBZ0JEWUNxQ2dnQUNnQ3JDZ2hCQXNnQkNBR0tBSU1JZ1ZCQTNScUtBSUFCRUFnQmlBRk5nSUFJQU5CQVVHOU5TQUdFQTlCQUF3QkN5QUNRUUZySWdJUUZDRUVJQUFvQXF3b0lnQWdCaWdDRENJRlFRTjBhaUFFTmdJQUlBUkZCRUFnQTBFQlFaY2VRUUFRRDBFQURBRUxJQUFnQlVFRGRHb2dBallDQkNBQUlBWW9BZ3hCQTNScUtBSUFJQUZCQVdvZ0FoQVNHa0VCQ3lFSUlBWkJFR29rQUNBSUMvVUNBUVYvSXdCQkVHc2lCaVFBQW44Z0FrRUJUUVJBSUFOQkFVR2tJRUVBRUE5QkFBd0JDeUFBSUFBdEFMd0JRUUZ5T2dDOEFTQUJJQVpCREdwQkFSQVJBa0FnQUNnQ2RDSUVSUVJBSUFBZ0JpZ0NERUVCYWlJRlFRZ1FFeUlFTmdKMElBUkZCRUFnQTBFQlFiNGdRUUFRRDBFQURBTUxJQUFnQlRZQ2NBd0JDeUFHS0FJTUlnVWdBQ2dDY0VrTkFDQUVJQVZCQVdvaUJFRURkQkFYSWdWRkJFQWdBMEVCUWI0Z1FRQVFEMEVBREFJTElBQWdCVFlDZENBRklBQW9BbkFpQjBFRGRHcEJBQ0FFSUFkclFRTjBFQlVhSUFBZ0JEWUNjQ0FBS0FKMElRUUxJQVFnQmlnQ0RDSUZRUU4wYWlnQ0FBUkFJQVlnQlRZQ0FDQURRUUZCMHpVZ0JoQVBRUUFNQVFzZ0FrRUJheUlDRUJRaEJDQUFLQUowSWdBZ0JpZ0NEQ0lGUVFOMGFpQUVOZ0lBSUFSRkJFQWdBMEVCUWI0Z1FRQVFEMEVBREFFTElBQWdCVUVEZEdvZ0FqWUNCQ0FBSUFZb0FneEJBM1JxS0FJQUlBRkJBV29nQWhBU0drRUJDeUVJSUFaQkVHb2tBQ0FJQzZBQkFRUi9Jd0JCRUdzaUJDUUFBbjhnQWtVRVFDQURRUUZCMXg1QkFCQVBRUUFNQVFzZ0FTQUVRUXhxUVFFUUVVRUJJQUpCQVdzaUJVVU5BQnBCQUNFQVFRQWhBZ05BSUFGQkFXb2lBU0FFUVFocVFRRVFFU0FFS0FJSUlnWkJHSFJCSDNVZ0JrSC9BSEVnQW5KQkIzUnhJUUlnQUVFQmFpSUFJQVZIRFFBTFFRRWdBa1VOQUJvZ0EwRUJRZGNlUVFBUUQwRUFDeUVISUFSQkVHb2tBQ0FIQ3hzQVFRRWhBQ0FDQkg5QkFRVWdBMEVCUWY0Z1FRQVFEMEVBQ3d1QUFRRUJmeU1BUVJCcklnQWtBRUVCSVFRQ1FDQUNRUUZOQkVCQkFDRUVJQU5CQVVIa0lFRUFFQThNQVFzZ0FTQUFRUXhxUVFFUUVTQUJRUUZxSUFCQkNHcEJBUkFSSUFKQkFtc2dBQ2dDQ0NJQlFRVjJRUUp4SUFGQkJIWkJBM0ZxUVFKcWNFVU5BRUVBSVFRZ0EwRUJRZVFnUVFBUUR3c2dBRUVRYWlRQUlBUUxCQUJCQUFzTG9yd0JJUUJCZ0FnTGtYVmpZVzV1YjNRZ1lXeHNiMk5oZEdVZ2IzQnFYM1JqWkY5elpXZGZaR0YwWVY5amFIVnVhMTkwS2lCaGNuSmhlUUF0S3lBZ0lEQllNSGdBTFRCWUt6QllJREJZTFRCNEt6QjRJREI0QUZWdWEyNXZkMjRnWm05eWJXRjBBRVpoYVd4bFpDQjBieUJ6WlhSMWNDQjBhR1VnWkdWamIyUmxjZ0JHWVdsc1pXUWdkRzhnY21WaFpDQjBhR1VnYUdWaFpHVnlBRzVoYmdBcWJGOTBhV3hsWDJ4bGJpQStJRlZKVGxSZlRVRllJQzBnVDFCS1gwTlBUVTFQVGw5RFFreExYMFJCVkVGZlJWaFVVa0VnTFNCd1gyb3lheTArYlY5emNHVmphV1pwWTE5d1lYSmhiUzV0WDJSbFkyOWtaWEl1YlY5emIzUmZiR1Z1WjNSb0FHbHVaZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJSFJvWlNCcGJXRm5aUUJKYm5aaGJHbGtJR0ZqWTJWemN5QjBieUJ3YVMwK2FXNWpiSFZrWlFBdmRHMXdMMjl3Wlc1cWNHVm5MM055WXk5aWFXNHZZMjl0Ylc5dUwyTnZiRzl5TG1NQVFVeE1YME5RVlZNQVQxQktYMDVWVFY5VVNGSkZRVVJUQUU1QlRnQkpUa1lBY0Y5cU1tc3RQbTFmYzNCbFkybG1hV05mY0dGeVlXMHViVjlrWldOdlpHVnlMbTFmYzI5MFgyeGxibWQwYUNBK0lGVkpUbFJmVFVGWUlDMGdUMUJLWDBOUFRVMVBUbDlEUWt4TFgwUkJWRUZmUlZoVVVrRUFDUWtKSUhCeVpXTmphVzUwYzJsNlpTQW9keXhvS1QwQUNRa0pJSE4wWlhCemFYcGxjeUFvYlN4bEtUMEFMZ0FvYm5Wc2JDa0FLQ1ZrTENWa0tTQUFKWE45Q2dBSkNTQjlDZ0JiUkVWV1hTQkVkVzF3SUdGdUlHbHRZV2RsWDJOdmJYQmZhR1ZoWkdWeUlITjBjblZqZENCN0NnQmJSRVZXWFNCRWRXMXdJR0Z1SUdsdFlXZGxYMmhsWVdSbGNpQnpkSEoxWTNRZ2V3b0FTVzFoWjJVZ2FXNW1ieUI3Q2dBSklHUmxabUYxYkhRZ2RHbHNaU0I3Q2dBbGN3a2dZMjl0Y0c5dVpXNTBJQ1ZrSUhzS0FBa0pJR052YlhBZ0pXUWdld29BQ1NCVWFXeGxJR2x1WkdWNE9pQjdDZ0FKSUUxaGNtdGxjaUJzYVhOME9pQjdDZ0JEYjJSbGMzUnlaV0Z0SUdsdVpHVjRJR1p5YjIwZ2JXRnBiaUJvWldGa1pYSTZJSHNLQUVOdlpHVnpkSEpsWVcwZ2FXNW1ieUJtY205dElHMWhhVzRnYUdWaFpHVnlPaUI3Q2dCVGRISmxZVzBnWlhKeWIzSWdkMmhwYkdVZ2NtVmhaR2x1WnlCS1VESWdTR1ZoWkdWeUlHSnZlQW9BUm05MWJtUWdZU0J0YVhOd2JHRmpaV1FnSnlWakpXTWxZeVZqSnlCaWIzZ2diM1YwYzJsa1pTQnFjREpvSUdKdmVBb0FUV0ZzWm05eWJXVmtJRXBRTWlCbWFXeGxJR1p2Y20xaGREb2dabWx5YzNRZ1ltOTRJRzExYzNRZ1ltVWdTbEJGUnlBeU1EQXdJSE5wWjI1aGRIVnlaU0JpYjNnS0FFMWhiR1p2Y20xbFpDQktVRElnWm1sc1pTQm1iM0p0WVhRNklITmxZMjl1WkNCaWIzZ2diWFZ6ZENCaVpTQm1hV3hsSUhSNWNHVWdZbTk0Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FuQmxaekl3TURBZ1ltOTRDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IzYVhSb0lFWlVXVkFnUW05NENnQkJJRzFoY210bGNpQkpSQ0IzWVhNZ1pYaHdaV04wWldRZ0tEQjRabVl0TFNrZ2FXNXpkR1ZoWkNCdlppQWxMamg0Q2dBSkNTQnRZM1E5SlhnS0FBa0pDU0JqWW14cmMzUjVQU1VqZUFvQUNRa0pJR056ZEhrOUpTTjRDZ0FKQ1NCd2NtYzlKU040Q2dCSmJuUmxaMlZ5SUc5MlpYSm1iRzkzQ2dBSklIUmtlRDBsZFN3Z2RHUjVQU1YxQ2dBSklIUjNQU1YxTENCMGFEMGxkUW9BQ1NCMGVEQTlKWFVzSUhSNU1EMGxkUW9BU1c1MllXeHBaQ0JqYjIxd2IyNWxiblFnYVc1a1pYZzZJQ1YxQ2dCVGRISmxZVzBnZEc5dklITm9iM0owQ2dCTllYSnJaWElnYUdGdVpHeGxjaUJtZFc1amRHbHZiaUJtWVdsc1pXUWdkRzhnY21WaFpDQjBhR1VnYldGeWEyVnlJSE5sWjIxbGJuUUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJR1p2Y2lCamRYSnlaVzUwSUhCeVpXTnBibU4wSUdOdlpHVmliRzlqYXlCbGJHVnRaVzUwQ2dCRmNuSnZjaUJ5WldGa2FXNW5JRk5RUTI5a0lGTlFRMjlqSUdWc1pXMWxiblFLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUZqWkNCdmNpQlRVV05qSUdWc1pXMWxiblFLQUVFZ1FsQkRReUJvWldGa1pYSWdZbTk0SUdseklHRjJZV2xzWVdKc1pTQmhiSFJvYjNWbmFDQkNVRU1nWjJsMlpXNGdZbmtnZEdobElFbElSRklnWW05NElDZ2xaQ2tnYVc1a2FXTmhkR1VnWTI5dGNHOXVaVzUwY3lCaWFYUWdaR1Z3ZEdnZ2FYTWdZMjl1YzNSaGJuUUtBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2FXeHNaV2RoYkNCMGFXeGxJRzltWm5ObGRBb0FTVzUyWVd4cFpDQndjbVZqYVc1amRBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR0poYm1RZ2NISmxZMmx1ZEhNS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ1lXeHNJSFZ6WldRZ1kyOXRjRzl1Wlc1MGN3b0FVMmw2WlNCdlppQmpiMlJsSUdKc2IyTnJJR1JoZEdFZ1pYaGpaV1ZrY3lCemVYTjBaVzBnYkdsdGFYUnpDZ0JUYVhwbElHOW1JSFJwYkdVZ1pHRjBZU0JsZUdObFpXUnpJSE41YzNSbGJTQnNhVzFwZEhNS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0J0ZFd4MGFYQnNaU0JOUTFRZ2JXRnlhMlZ5Y3dvQVEyOXljblZ3ZEdWa0lGQlFUU0J0WVhKclpYSnpDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0JtYjNJZ2RHbHNaU0J5WlhOdmJIVjBhVzl1Y3dvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJRzExYkhScGNHeGxJR052Ykd4bFkzUnBiMjV6Q2dCSmJuWmhiR2xrSUZCRFRGSWdZbTk0TGlCU1pYQnZjblJ6SURBZ2NHRnNaWFIwWlNCamIyeDFiVzV6Q2dCWFpTQmtieUJ1YjNRZ2MzVndjRzl5ZENCU1Qwa2dhVzRnWkdWamIyUnBibWNnU0ZRZ1kyOWtaV0pzYjJOcmN3b0FRMkZ1Ym05MElHaGhibVJzWlNCaWIzZ2diMllnZFc1a1pXWnBibVZrSUhOcGVtVnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1kyOXNiR1ZqZEdsdmJuTWdkMmwwYUc5MWRDQnpZVzFsSUc1MWJXSmxjaUJ2WmlCcGJtUnBlR1Z6Q2dCSmJuWmhiR2xrSUhScGJHVmpMVDUzYVc1ZmVIaDRJSFpoYkhWbGN3b0FRMkZ1Ym05MElHaGhibVJzWlNCaWIzZ2diMllnYkdWemN5QjBhR0Z1SURnZ1lubDBaWE1LQUVOaGJtNXZkQ0JvWVc1a2JHVWdXRXdnWW05NElHOW1JR3hsYzNNZ2RHaGhiaUF4TmlCaWVYUmxjd29BUTI5dGNHOXVaVzUwSUdsdVpHVjRJQ1YxSUhWelpXUWdjMlYyWlhKaGJDQjBhVzFsY3dvQVNXNTJZV3hwWkNCUVEweFNJR0p2ZUM0Z1VtVndiM0owY3lBbFpDQmxiblJ5YVdWekNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVWdibTlrWlhNS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0J0WTNRZ1pHRjBZU0IzYVhSb2FXNGdiWFZzZEdsd2JHVWdUVU5VSUhKbFkyOXlaSE1LQUVOaGJtNXZkQ0JrWldOdlpHVWdkR2xzWlN3Z2JXVnRiM0o1SUdWeWNtOXlDZ0J2Y0dwZmFqSnJYMkZ3Y0d4NVgyNWlYM1JwYkdWZmNHRnlkSE5mWTI5eWNtVmpkR2x2YmlCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lITnJhWEJ3YVc1bklFcFFSVWN5TURBd0lHSnZlQ3dnYzNSeVpXRnRJR1Z5Y205eUNnQlFjbTlpYkdWdElIZHBkR2dnY21WaFpHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVlc1cmJtOTNiaUJ0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGa1pDQjBiQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdGa1pDQnRhQ0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhSaGEyVWdhVzRnWTJoaGNtZGxJRk5KV2lCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRkJVSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JRVUZRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRk5QVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRXhVSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5Qk5RMVFnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRTFEVkNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2MzQmhZMlVnWm05eUlHVjRjR1ZqZEdWa0lGTlBVQ0J0WVhKclpYSUtBRVY0Y0dWamRHVmtJRk5QVUNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5QSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlNSMDRnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlFUU0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbFlXUWdVRkJOSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlVURTBnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQk1UU0J0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYzNCaFkyVWdabTl5SUdWNGNHVmpkR1ZrSUVWUVNDQnRZWEpyWlhJS0FFVjRjR1ZqZEdWa0lFVlFTQ0J0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1ExSkhJRzFoY210bGNnb0FWVzVyYm05M2JpQndjbTluY21WemMybHZiaUJ2Y21SbGNpQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCVmJtdHViM2R1SUZOamIyUWdkbUZzZFdVZ2FXNGdRMDlFSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QkRUMFFnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGRkRSQ0J0WVhKclpYSUtBRU55Y205eUlISmxZV1JwYm1jZ1EwSkVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUVQwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUVOUFF5QnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVVVORElHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJOUTBNZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QnlaV0ZrSUUxRFF5QnRZWEpyWlhJS0FISmxjWFZwY21Wa0lGTkpXaUJ0WVhKclpYSWdibTkwSUdadmRXNWtJR2x1SUcxaGFXNGdhR1ZoWkdWeUNnQnlaWEYxYVhKbFpDQkRUMFFnYldGeWEyVnlJRzV2ZENCbWIzVnVaQ0JwYmlCdFlXbHVJR2hsWVdSbGNnb0FjbVZ4ZFdseVpXUWdVVU5FSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdoaGJtUnNaU0JxY0dWbk1qQXdNQ0JtYVd4bElHaGxZV1JsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdjbVZoWkNCb1pXRmtaWElLQUVWeWNtOXlJSGRwZEdnZ1NsQWdVMmxuYm1GMGRYSmxJRG9nWW1Ga0lHMWhaMmxqSUc1MWJXSmxjZ29BU1c0Z1UwOVVJRzFoY210bGNpd2dWRkJUYjNRZ0tDVmtLU0JwY3lCdWIzUWdkbUZzYVdRZ2NtVm5ZWEprY3lCMGJ5QjBhR1VnWTNWeWNtVnVkQ0J1ZFcxaVpYSWdiMllnZEdsc1pTMXdZWEowSUNnbFpDa3NJR2RwZG1sdVp5QjFjQW9BU1c0Z1UwOVVJRzFoY210bGNpd2dWRkJUYjNRZ0tDVmtLU0JwY3lCdWIzUWdkbUZzYVdRZ2NtVm5ZWEprY3lCMGJ5QjBhR1VnY0hKbGRtbHZkWE1nYm5WdFltVnlJRzltSUhScGJHVXRjR0Z5ZENBb0pXUXBMQ0JuYVhacGJtY2dkWEFLQUVsdUlGTlBWQ0J0WVhKclpYSXNJRlJRVTI5MElDZ2xaQ2tnYVhNZ2JtOTBJSFpoYkdsa0lISmxaMkZ5WkhNZ2RHOGdkR2hsSUdOMWNuSmxiblFnYm5WdFltVnlJRzltSUhScGJHVXRjR0Z5ZENBb2FHVmhaR1Z5S1NBb0pXUXBMQ0JuYVhacGJtY2dkWEFLQUhScGJHVnpJSEpsY1hWcGNtVWdZWFFnYkdWaGMzUWdiMjVsSUhKbGMyOXNkWFJwYjI0S0FFMWhjbXRsY2lCcGN5QnViM1FnWTI5dGNHeHBZVzUwSUhkcGRHZ2dhWFJ6SUhCdmMybDBhVzl1Q2dCUWNtOWliR1Z0SUhkcGRHZ2djMlZsYXlCbWRXNWpkR2x2YmdvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwTENCSmJuWmhiR2xrSUdOaWJHdDNMMk5pYkd0b0lHTnZiV0pwYm1GMGFXOXVDZ0JKYm5aaGJHbGtJRzExYkhScGNHeGxJR052YlhCdmJtVnVkQ0IwY21GdWMyWnZjbTFoZEdsdmJnb0FRMkZ1Ym05MElIUmhhMlVnYVc0Z1kyaGhjbWRsSUdOdmJHeGxZM1JwYjI1eklHOTBhR1Z5SUhSb1lXNGdZWEp5WVhrZ1pHVmpiM0p5Wld4aGRHbHZiZ29BVkc5dklHeGhjbWRsSUhaaGJIVmxJR1p2Y2lCT2NIQnRDZ0JPYjNRZ1pXNXZkV2RvSUdKNWRHVnpJSFJ2SUhKbFlXUWdUbkJ3YlFvQVltRmtJSEJzWVdObFpDQnFjR1ZuSUdOdlpHVnpkSEpsWVcwS0FBa2dUV0ZwYmlCb1pXRmtaWElnYzNSaGNuUWdjRzl6YVhScGIyNDlKV3hzYVFvSklFMWhhVzRnYUdWaFpHVnlJR1Z1WkNCd2IzTnBkR2x2YmowbGJHeHBDZ0JOWVhKclpYSWdjMmw2WlNCcGJtTnZibk5wYzNSbGJuUWdkMmwwYUNCemRISmxZVzBnYkdWdVozUm9DZ0JVYVd4bElIQmhjblFnYkdWdVozUm9JSE5wZW1VZ2FXNWpiMjV6YVhOMFpXNTBJSGRwZEdnZ2MzUnlaV0Z0SUd4bGJtZDBhQW9BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElHUmhkR0VnYzNCaGJtNXBibWNLQUZkeWIyNW5JR1pzWVdjS0FFVnljbTl5SUhkcGRHZ2dSbFJaVUNCemFXZHVZWFIxY21VZ1FtOTRJSE5wZW1VS0FFVnljbTl5SUhkcGRHZ2dTbEFnYzJsbmJtRjBkWEpsSUVKdmVDQnphWHBsQ2dCSmJuWmhiR2xrSUhCeVpXTnBibU4wSUhOcGVtVUtBRWx1WTI5dWMybHpkR1Z1ZENCdFlYSnJaWElnYzJsNlpRb0FTVzUyWVd4cFpDQnRZWEpyWlhJZ2MybDZaUW9BUlhKeWIzSWdkMmwwYUNCVFNWb2diV0Z5YTJWeUlITnBlbVVLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHRmtaQ0JoSUc1bGR5QjJZV3hwWkdGMGFXOXVJSEJ5YjJObFpIVnlaUW9BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1pHVmpiMlJsSUhScGJHVUtBRVpoYVd4bFpDQjBieUJrWldOdlpHVWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2FXNGdkR2hsSUVwUU1pQm1hV3hsQ2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdZMjlzYkdWamRHbHZibk1nZDJsMGFDQnBibVJwZUNCemFIVm1abXhsQ2dCRFlXNXViM1FnWVd4c2IyTmhkR1VnVkdsbGNpQXhJR2hoYm1Sc1pRb0FUbThnWkdWamIyUmxaQ0JoY21WaElIQmhjbUZ0WlhSbGNuTXNJSE5sZENCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUhSdklIUm9aU0IzYUc5c1pTQnBiV0ZuWlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZM0psWVhSbElGUmhaeTEwY21WbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldsdWFYUnBZV3hwZW1VZ2RHaGxJSFJoWnlCMGNtVmxDZ0JGY25KdmNpQnlaV0ZrYVc1bklGTlFRMjlrSUZOUVEyOWpJR1ZzWlcxbGJuUXNJRWx1ZG1Gc2FXUWdkSEpoYm5ObWIzSnRZWFJwYjI0Z1ptOTFibVFLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQzRnVlc1emRYQndiM0owWldRZ1RXbDRaV1FnU0ZRZ1kyOWtaUzFpYkc5amF5QnpkSGxzWlNCbWIzVnVaQW9BVkdsc1pTQlpJR052YjNKa2FXNWhkR1Z6SUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrQ2dCVWFXeGxJRmdnWTI5dmNtUnBibUYwWlhNZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FFbHRZV2RsSUdOdmIzSmthVzVoZEdWeklHRmliM1psSUVsT1ZGOU5RVmdnWVhKbElHNXZkQ0J6ZFhCd2IzSjBaV1FLQUVwUVJVY3lNREF3SUVobFlXUmxjaUJpYjNnZ2JtOTBJSEpsWVdRZ2VXVjBMQ0FuSldNbFl5VmpKV01uSUdKdmVDQjNhV3hzSUdKbElHbG5ibTl5WldRS0FHOXdhbDlxTW10ZmJXVnlaMlZmY0hCMEtDa2dhR0Z6SUdGc2NtVmhaSGtnWW1WbGJpQmpZV3hzWldRS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1UwOVVJRzFoY210bGNpNGdWR2xzWlNCcGJtUmxlQ0JoYkd4dlkyRjBhVzl1SUdaaGFXeGxaQW9BU1dkdWIzSnBibWNnYVdoa2NpQmliM2d1SUVacGNuTjBJR2xvWkhJZ1ltOTRJR0ZzY21WaFpIa2djbVZoWkFvQVduQndkQ0FsZFNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0cwZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCUVZFVlNUU0JqYUdWamF5Qm1ZV2xzZFhKbE9pQWxaQ0J6ZVc1MGFHVjBhWHBsWkNBd2VFWkdJRzFoY210bGNuTWdjbVZoWkFvQUNRa0pJR05pYkd0M1BUSmVKV1FLQUFrSkNTQmpZbXhyYUQweVhpVmtDZ0FKQ1FrZ2NXNTBjM1I1UFNWa0NnQWxjeUJrZUQwbFpDd2daSGs5SldRS0FBa0pDU0J5YjJsemFHbG1kRDBsWkFvQUNRa0pJRzUxYldkaWFYUnpQU1ZrQ2dBSkNTQnVkVzFzWVhsbGNuTTlKV1FLQUNWeklHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdGamJqMGxaQ3dnYm5WdFkyOXRjSE05SldRS0FHOXdhbDlxY0RKZllYQndiSGxmWTJSbFpqb2dZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0FKQ1FrZ2JuVnRjbVZ6YjJ4MWRHbHZibk05SldRS0FBa0pJSFI1Y0dVOUpTTjRMQ0J3YjNNOUpXeHNhU3dnYkdWdVBTVmtDZ0FsY3lCeloyNWtQU1ZrQ2dBSkNRa2djVzFtWW1sa1BTVmtDZ0FsY3lCd2NtVmpQU1ZrQ2dBSkNTQnVZaUJ2WmlCMGFXeGxMWEJoY25RZ2FXNGdkR2xzWlNCYkpXUmRQU1ZrQ2dBbGN5QjRNVDBsWkN3Z2VURTlKV1FLQUNWeklIZ3dQU1ZrTENCNU1EMGxaQW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0IwYVd4bElDVmtMeVZrQ2dCVFpYUjBhVzVuSUdSbFkyOWthVzVuSUdGeVpXRWdkRzhnSldRc0pXUXNKV1FzSldRS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ1kyOXRjRzl1Wlc1MElDVmtDZ0JKYm5aaGJHbGtJSFpoYkhWbElHWnZjaUJ1ZFcxeVpYTnZiSFYwYVc5dWN5QTZJQ1ZrTENCdFlYZ2dkbUZzZFdVZ2FYTWdjMlYwSUdsdUlHOXdaVzVxY0dWbkxtZ2dZWFFnSldRS0FFbHVkbUZzYVdRZ1kyOXRjRzl1Wlc1MElHNTFiV0psY2pvZ0pXUXNJSEpsWjJGeVpHbHVaeUIwYUdVZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdKV1FLQUZSdmJ5QnRZVzU1SUZCUFEzTWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQnVkVzFpWlhJZ0pXUUtBRWx1ZG1Gc2FXUWdkR2xzWlNCd1lYSjBJR2x1WkdWNElHWnZjaUIwYVd4bElHNTFiV0psY2lBbFpDNGdSMjkwSUNWa0xDQmxlSEJsWTNSbFpDQWxaQW9BUlhKeWIzSWdkMmwwYUNCVFNWb2diV0Z5YTJWeU9pQnVkVzFpWlhJZ2IyWWdZMjl0Y0c5dVpXNTBJR2x6SUdsc2JHVm5ZV3dnTFQ0Z0pXUUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJR1p2Y2lCamFXVnNZV0lLQUVOaGJtNXZkQ0JoYkd4dlkyRjBaU0JqWW14ckxUNWtaV052WkdWa1gyUmhkR0VLQUVaaGFXeGxaQ0IwYnlCdFpYSm5aU0JRVUZRZ1pHRjBZUW9BUm1GcGJHVmtJSFJ2SUcxbGNtZGxJRkJRVFNCa1lYUmhDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUJzWVhsbGNuTWdhVzRnUTA5RUlHMWhjbXRsY2lBNklDVmtJRzV2ZENCcGJpQnlZVzVuWlNCYk1TMDJOVFV6TlYwS0FDVnpPaVZrT21OdmJHOXlYMk50ZVd0ZmRHOWZjbWRpQ2dsRFFVNGdUazlVSUVOUFRsWkZVbFFLQUNWek9pVmtPbU52Ykc5eVgyVnplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0FsY3pvbFpEcGpiMnh2Y2w5emVXTmpYM1J2WDNKbllnb0pRMEZPSUU1UFZDQkRUMDVXUlZKVUNnQlRkSEpsWVcwZ2RHOXZJSE5vYjNKMExDQmxlSEJsWTNSbFpDQlRUMVFLQUZWdVlXSnNaU0IwYnlCelpYUWdkREVnYUdGdVpHeGxJR0Z6SUZSTVV3b0FVM1J5WldGdElHUnZaWE1nYm05MElHVnVaQ0IzYVhSb0lFVlBRd29BUTJGdWJtOTBJR2hoYm1Sc1pTQmliM2dnYzJsNlpYTWdhR2xuYUdWeUlIUm9ZVzRnTWw0ek1nb0FiM0JxWDNCcFgyNWxlSFJmYkhKamNDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY214amNDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmWTNCeWJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY0dOeWJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY25CamJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNReFgyUmxZMjlrWlY5allteHJLQ2s2SUhWdWMzVndjRzl5ZEdWa0lHSndibTlmY0d4MWMxOXZibVVnUFNBbFpDQStQU0F6TVFvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlNCMGFXeGxJREV2TVFvQVNXNXpkV1ptYVdOcFpXNTBJR1JoZEdFZ1ptOXlJRU5OUVZBZ1ltOTRMZ29BVG1WbFpDQjBieUJ5WldGa0lHRWdVRU5NVWlCaWIzZ2dZbVZtYjNKbElIUm9aU0JEVFVGUUlHSnZlQzRLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRSRVZHSUdKdmVDNEtBRTUxYldKbGNpQnZaaUJqYUdGdWJtVnNJR1JsYzJOeWFYQjBhVzl1SUdseklHVnhkV0ZzSUhSdklIcGxjbThnYVc0Z1EwUkZSaUJpYjNndUNnQlRkSEpsWVcwZ1pYSnliM0lnZDJocGJHVWdjbVZoWkdsdVp5QktVRElnU0dWaFpHVnlJR0p2ZURvZ2JtOGdKMmxvWkhJbklHSnZlQzRLQUU1dmJpQmpiMjVtYjNKdFlXNTBJR052WkdWemRISmxZVzBnVkZCemIzUTlQVlJPYzI5MExnb0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnNklHSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FRbTk0SUd4bGJtZDBhQ0JwY3lCcGJtTnZibk5wYzNSbGJuUXVDZ0JTWlhOdmJIVjBhVzl1SUdaaFkzUnZjaUJwY3lCbmNtVmhkR1Z5SUhSb1lXNGdkR2hsSUcxaGVHbHRkVzBnY21WemIyeDFkR2x2YmlCcGJpQjBhR1VnWTI5dGNHOXVaVzUwTGdvQVEyOXRjRzl1Wlc1MElHMWhjSEJwYm1jZ2MyVmxiWE1nZDNKdmJtY3VJRlJ5ZVdsdVp5QjBieUJqYjNKeVpXTjBMZ29BU1c1amIyMXdiR1YwWlNCamFHRnVibVZzSUdSbFptbHVhWFJwYjI1ekxnb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1NXNTJZV3hwWkNCamIyUmxZbXh2WTJzZ2JHVnVaM1JvSUhaaGJIVmxjeTRLQUZkbElHUnZJRzV2ZENCemRYQndiM0owSUcxdmNtVWdkR2hoYmlBeklHTnZaR2x1WnlCd1lYTnpaWE1nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yT3lCVWFHbHpJR052WkdWaWJHOWphM01nYUdGeklDVmtJSEJoYzNObGN5NEtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGUm9aWEpsSUdGeVpTQWxaQ0I2WlhKdklHSnBkSEJzWVc1bGN5QnBiaUFsWkNCaWFYUndiR0Z1WlhNdUNnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnYlhWc2RHbHdiR1VnZEhKaGJuTm1iM0p0WVhScGIyNGdjM1JoWjJWekxnb0FWVzVyYm05M2JpQnRZWEpyWlhJZ2FHRnpJR0psWlc0Z1pHVjBaV04wWldRZ1lXNWtJR2RsYm1WeVlYUmxaQ0JsY25KdmNpNEtBRU52WkdWaklIQnliM1pwWkdWa0lIUnZJSFJvWlNCdmNHcGZjMlYwZFhCZlpHVmpiMlJsY2lCbWRXNWpkR2x2YmlCcGN5QnViM1FnWVNCa1pXTnZiWEJ5WlhOemIzSWdhR0Z1Wkd4bGNpNEtBRU52WkdWaklIQnliM1pwWkdWa0lIUnZJSFJvWlNCdmNHcGZjbVZoWkY5b1pXRmtaWElnWm5WdVkzUnBiMjRnYVhNZ2JtOTBJR0VnWkdWamIyMXdjbVZ6YzI5eUlHaGhibVJzWlhJdUNnQlVhV3hsY3lCa2IyNG5kQ0JoYkd3Z2FHRjJaU0IwYUdVZ2MyRnRaU0JrYVcxbGJuTnBiMjR1SUZOcmFYQWdkR2hsSUUxRFZDQnpkR1Z3TGdvQVRuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdLQ1ZrS1NCcGN5QnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQmhJRTFEVkM0Z1UydHBjQ0IwYUdVZ1RVTlVJSE4wWlhBdUNnQktVRElnWW05NElIZG9hV05vSUdGeVpTQmhablJsY2lCMGFHVWdZMjlrWlhOMGNtVmhiU0IzYVd4c0lHNXZkQ0JpWlNCeVpXRmtJR0o1SUhSb2FYTWdablZ1WTNScGIyNHVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQlhhR1Z1SUhSb1pTQnVkVzFpWlhJZ2IyWWdlbVZ5YnlCd2JHRnVaWE1nWW1sMGNHeGhibVZ6SUdseklHVnhkV0ZzSUhSdklIUm9aU0J1ZFcxaVpYSWdiMllnWW1sMGNHeGhibVZ6TENCdmJteDVJSFJvWlNCamJHVmhiblZ3SUhCaGMzTWdiV0ZyWlhNZ2MyVnVjMlVzSUdKMWRDQjNaU0JvWVhabElDVmtJSEJoYzNObGN5QnBiaUIwYUdseklHTnZaR1ZpYkc5amF5NGdWR2hsY21WbWIzSmxMQ0J2Ym14NUlIUm9aU0JqYkdWaGJuVndJSEJoYzNNZ2QybHNiQ0JpWlNCa1pXTnZaR1ZrTGlCVWFHbHpJRzFsYzNOaFoyVWdkMmxzYkNCdWIzUWdZbVVnWkdsemNHeGhlV1ZrSUdGbllXbHVMZ29BU1cxaFoyVWdhR0Z6SUd4bGMzTWdZMjl0Y0c5dVpXNTBjeUIwYUdGdUlHTnZaR1Z6ZEhKbFlXMHVDZ0JPWldWa0lIUnZJR1JsWTI5a1pTQjBhR1VnYldGcGJpQm9aV0ZrWlhJZ1ltVm1iM0psSUdKbFoybHVJSFJ2SUdSbFkyOWtaU0IwYUdVZ2NtVnRZV2x1YVc1bklHTnZaR1Z6ZEhKbFlXMHVDZ0JRYzI5MElIWmhiSFZsSUc5bUlIUm9aU0JqZFhKeVpXNTBJSFJwYkdVdGNHRnlkQ0JwY3lCbGNYVmhiQ0IwYnlCNlpYSnZMQ0IzWlNCaGMzTjFiV2x1WnlCcGRDQnBjeUIwYUdVZ2JHRnpkQ0IwYVd4bExYQmhjblFnYjJZZ2RHaGxJR052WkdWemRISmxZVzB1Q2dCQklHMWhiR1p2Y20xbFpDQmpiMlJsWW14dlkyc2dkR2hoZENCb1lYTWdiVzl5WlNCMGFHRnVJRzl1WlNCamIyUnBibWNnY0dGemN5d2dZblYwSUhwbGNtOGdiR1Z1WjNSb0lHWnZjaUF5Ym1RZ1lXNWtJSEJ2ZEdWdWRHbGhiR3g1SUhSb1pTQXpjbVFnY0dGemN5QnBiaUJoYmlCSVZDQmpiMlJsWW14dlkyc3VDZ0FKQ1FrZ2RHbHNaUzF3WVhKMFd5VmtYVG9nYzNSaGNsOXdiM005Sld4c2FTd2daVzVrWDJobFlXUmxjajBsYkd4cExDQmxibVJmY0c5elBTVnNiR2t1Q2dCVWFXeGxJQ1YxSUdoaGN5QlVVSE52ZENBOVBTQXdJR0Z1WkNCVVRuTnZkQ0E5UFNBd0xDQmlkWFFnYm04Z2IzUm9aWElnZEdsc1pTMXdZWEowY3lCM1pYSmxJR1p2ZFc1a0xpQkZUME1nYVhNZ1lXeHpieUJ0YVhOemFXNW5MZ29BUTI5dGNHOXVaVzUwSUNWa0lHUnZaWE51SjNRZ2FHRjJaU0JoSUcxaGNIQnBibWN1Q2dCQklHTnZibVp2Y20xcGJtY2dTbEF5SUhKbFlXUmxjaUJ6YUdGc2JDQnBaMjV2Y21VZ1lXeHNJRU52Ykc5MWNpQlRjR1ZqYVdacFkyRjBhVzl1SUdKdmVHVnpJR0ZtZEdWeUlIUm9aU0JtYVhKemRDd2djMjhnZDJVZ2FXZHViM0psSUhSb2FYTWdiMjVsTGdvQVZHaGxJSE5wWjI1aGRIVnlaU0JpYjNnZ2JYVnpkQ0JpWlNCMGFHVWdabWx5YzNRZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVZHaGxJQ0JpYjNnZ2JYVnpkQ0JpWlNCMGFHVWdabWx5YzNRZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVZHaGxJR1owZVhBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUhObFkyOXVaQ0JpYjNnZ2FXNGdkR2hsSUdacGJHVXVDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxMZ29BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdTVzVqYjNKeVpXTjBJRTFGVENCelpXZHRaVzUwSUhObGNYVmxibU5sTGdvQVEyOXRjRzl1Wlc1MElDVmtJR2x6SUcxaGNIQmxaQ0IwZDJsalpTNEtBRTl1YkhrZ2IyNWxJRU5OUVZBZ1ltOTRJR2x6SUdGc2JHOTNaV1F1Q2dCWFpTQnVaV1ZrSUdGdUlHbHRZV2RsSUhCeVpYWnBiM1Z6YkhrZ1kzSmxZWFJsWkM0S0FFbElSRklnWW05NFgyMXBjM05wYm1jdUlGSmxjWFZwY21Wa0xnb0FTbEF5U0NCaWIzZ2diV2x6YzJsdVp5NGdVbVZ4ZFdseVpXUXVDZ0JPYjNRZ2MzVnlaU0JvYjNjZ2RHaGhkQ0JvWVhCd1pXNWxaQzRLQUUxaGFXNGdhR1ZoWkdWeUlHaGhjeUJpWldWdUlHTnZjbkpsWTNSc2VTQmtaV052WkdWa0xnb0FWR2xzWlNBbFpDOGxaQ0JvWVhNZ1ltVmxiaUJrWldOdlpHVmtMZ29BU0dWaFpHVnlJRzltSUhScGJHVWdKV1FnTHlBbFpDQm9ZWE1nWW1WbGJpQnlaV0ZrTGdvQVJXMXdkSGtnVTA5VUlHMWhjbXRsY2lCa1pYUmxZM1JsWkRvZ1VITnZkRDBsWkM0S0FFUnBjbVZqZENCMWMyVWdZWFFnSXlWa0lHaHZkMlYyWlhJZ2NHTnZiRDBsWkM0S0FFbHRjR3hsYldWdWRHRjBhVzl1SUd4cGJXbDBZWFJwYjI0NklHWnZjaUJ3WVd4bGRIUmxJRzFoY0hCcGJtY3NJSEJqYjJ4YkpXUmRJSE5vYjNWc1pDQmlaU0JsY1hWaGJDQjBieUFsWkN3Z1luVjBJR2x6SUdWeGRXRnNJSFJ2SUNWa0xnb0FTVzUyWVd4cFpDQmpiMjF3YjI1bGJuUXZjR0ZzWlhSMFpTQnBibVJsZUNCbWIzSWdaR2x5WldOMElHMWhjSEJwYm1jZ0pXUXVDZ0JKYm5aaGJHbGtJSFpoYkhWbElHWnZjaUJqYldGd1d5VmtYUzV0ZEhsd0lEMGdKV1F1Q2dCUWMyOTBJSFpoYkhWbElHbHpJRzV2ZENCamIzSnlaV04wSUhKbFoyRnlaSE1nZEc4Z2RHaGxJRXBRUlVjeU1EQXdJRzV2Y20wNklDVmtMZ29BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdWa3hESUdOdlpHVWdjSEp2WkhWalpYTWdjMmxuYm1sbWFXTmhiblFnYzJGdGNHeGxjeUJ2ZFhSemFXUmxJSFJvWlNCamIyUmxZbXh2WTJzZ1lYSmxZUzRLQUZWdVpYaHdaV04wWldRZ1QwOU5MZ29BTXpJZ1ltbDBjeUJoY21VZ2JtOTBJR1Z1YjNWbmFDQjBieUJrWldOdlpHVWdkR2hwY3lCamIyUmxZbXh2WTJzc0lITnBibU5sSUhSb1pTQnVkVzFpWlhJZ2IyWWdZbWwwY0d4aGJtVXNJQ1ZrTENCcGN5QnNZWEpuWlhJZ2RHaGhiaUF6TUM0S0FFSnZkSFJ2YlNCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVURTlKV1FwSUhOb2IzVnNaQ0JpWlNBK0lEQXVDZ0JTYVdkb2RDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlREU5SldRcElITm9iM1ZzWkNCaVpTQStJREF1Q2dCVmNDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlVEE5SldRcElITm9iM1ZzWkNCaVpTQStQU0F3TGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJSE5vYjNWc1pDQmlaU0ErUFNBd0xnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUVVGUWdiV0Z5YTJWeU9pQndZV05yWlhRZ2FHVmhaR1Z5SUdoaGRtVWdZbVZsYmlCd2NtVjJhVzkxYzJ4NUlHWnZkVzVrSUdsdUlIUm9aU0J0WVdsdUlHaGxZV1JsY2lBb1VGQk5JRzFoY210bGNpa3VDZ0JUZEdGeWRDQjBieUJ5WldGa0lHb3lheUJ0WVdsdUlHaGxZV1JsY2lBb0pXeHNaQ2t1Q2dCQ2IzUjBiMjBnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZWEpsWVNBb2NtVm5hVzl1WDNreFBTVmtLU0JwY3lCdmRYUnphV1JsSUhSb1pTQnBiV0ZuWlNCaGNtVmhJQ2haYzJsNlBTVmtLUzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2FYTWdiM1YwYzJsa1pTQjBhR1VnYVcxaFoyVWdZWEpsWVNBb1dYTnBlajBsWkNrdUNnQlNhV2RvZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVERTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZoemFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmh6YVhvOUpXUXBMZ29BUW05MGRHOXRJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk1TVQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XVTl6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWlQzTnBlajBsWkNrdUNnQlNhV2RvZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVERTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZoUGMybDZQU1ZrS1M0S0FFeGxablFnY0c5emFYUnBiMjRnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZWEpsWVNBb2NtVm5hVzl1WDNnd1BTVmtLU0JwY3lCdmRYUnphV1JsSUhSb1pTQnBiV0ZuWlNCaGNtVmhJQ2hZVDNOcGVqMGxaQ2t1Q2dCVGFYcGxJSGdnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZMjl0Y0c5dVpXNTBJR2x0WVdkbElHbHpJR2x1WTI5eWNtVmpkQ0FvWTI5dGNGc2xaRjB1ZHowbFpDa3VDZ0JUYVhwbElIa2diMllnZEdobElHUmxZMjlrWldRZ1kyOXRjRzl1Wlc1MElHbHRZV2RsSUdseklHbHVZMjl5Y21WamRDQW9ZMjl0Y0ZzbFpGMHVhRDBsWkNrdUNnQlVhV3hsSUhKbFlXUXNJR1JsWTI5a1pXUWdZVzVrSUhWd1pHRjBaV1FnYVhNZ2JtOTBJSFJvWlNCa1pYTnBjbVZrSUc5dVpTQW9KV1FnZG5NZ0pXUXBMZ29BU1c1MllXeHBaQ0JqYjIxd2IyNWxiblFnYVc1a1pYZ2dKV1FnS0Q0OUlDVmtLUzRLQUc5d2FsOXlaV0ZrWDJobFlXUmxjaWdwSUhOb2IzVnNaQ0JpWlNCallXeHNaV1FnWW1WbWIzSmxJRzl3YWw5elpYUmZaR1ZqYjJSbFpGOWpiMjF3YjI1bGJuUnpLQ2t1Q2dCTlpXMXZjbmtnWVd4c2IyTmhkR2x2YmlCbVlXbHNkWEpsSUdsdUlHOXdhbDlxY0RKZllYQndiSGxmY0dOc2NpZ3BMZ29BYVcxaFoyVXRQbU52YlhCeld5VmtYUzVrWVhSaElEMDlJRTVWVEV3Z2FXNGdiM0JxWDJwd01sOWhjSEJzZVY5d1kyeHlLQ2t1Q2dCcGJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lDZ2xlQ2tLQUVaaGFXd2dkRzhnY21WaFpDQjBhR1VnWTNWeWNtVnVkQ0J0WVhKclpYSWdjMlZuYldWdWRDQW9KU040S1FvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJKU0VSU0lIY29KWFVwSUdnb0pYVXBJSFp6TGlCVFNWb2dkeWdsZFNrZ2FDZ2xkU2tLQUVWeWNtOXlJSEpsWVdScGJtY2dRMDlESUcxaGNtdGxjaUFvWW1Ga0lHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUnpLUW9BU1c1MllXeHBaQ0J1ZFcxaVpYSWdiMllnZEdsc1pYTWdPaUFsZFNCNElDVjFJQ2h0WVhocGJYVnRJR1pwZUdWa0lHSjVJR3B3WldjeU1EQXdJRzV2Y20wZ2FYTWdOalUxTXpVZ2RHbHNaWE1wQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCamIyMXdiMjVsYm5SeklDaHBhR1J5S1FvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdhR0Z1Wkd4bElHbHRZV2RsSUdobFlXUmxjaUFvYVdoa2Npa0tBRmR5YjI1bklIWmhiSFZsY3lCbWIzSTZJSGNvSldRcElHZ29KV1FwSUc1MWJXTnZiWEJ6S0NWa0tTQW9hV2hrY2lrS0FFbHVkbUZzYVdRZ2RtRnNkV1Z6SUdadmNpQmpiMjF3SUQwZ0pXUWdPaUJrZUQwbGRTQmtlVDBsZFNBb2MyaHZkV3hrSUdKbElHSmxkSGRsWlc0Z01TQmhibVFnTWpVMUlHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1NsQkZSekl3TURBZ2JtOXliU2tLQUVKaFpDQnBiV0ZuWlNCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRUpoWkNCRFQweFNJR2hsWVdSbGNpQmliM2dnS0dKaFpDQnphWHBsS1FvQVFtRmtJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQW9ZbUZrSUhOcGVtVXBDZ0JGY25KdmNpQjNhWFJvSUZOSldpQnRZWEpyWlhJNklHNWxaMkYwYVhabElHOXlJSHBsY204Z2FXMWhaMlVnYzJsNlpTQW9KV3hzWkNCNElDVnNiR1FwQ2dCemEybHdPaUJ6WldkdFpXNTBJSFJ2YnlCc2IyNW5JQ2dsWkNrZ2QybDBhQ0J0WVhnZ0tDVmtLU0JtYjNJZ1kyOWtaV0pzYjJOcklDVmtJQ2h3UFNWa0xDQmlQU1ZrTENCeVBTVmtMQ0JqUFNWa0tRb0FjbVZoWkRvZ2MyVm5iV1Z1ZENCMGIyOGdiRzl1WnlBb0pXUXBJSGRwZEdnZ2JXRjRJQ2dsWkNrZ1ptOXlJR052WkdWaWJHOWpheUFsWkNBb2NEMGxaQ3dnWWowbFpDd2djajBsWkN3Z1l6MGxaQ2tLQUVSbGMzQnBkR1VnU2xBeUlFSlFReUU5TWpVMUxDQndjbVZqYVhOcGIyNGdZVzVrTDI5eUlITm5ibVFnZG1Gc2RXVnpJR1p2Y2lCamIyMXdXeVZrWFNCcGN5QmthV1ptWlhKbGJuUWdkR2hoYmlCamIyMXdXekJkT2dvZ0lDQWdJQ0FnSUZzd1hTQndjbVZqS0NWa0tTQnpaMjVrS0NWa0tTQmJKV1JkSUhCeVpXTW9KV1FwSUhObmJtUW9KV1FwQ2dCaVlXUWdZMjl0Y0c5dVpXNTBJRzUxYldKbGNpQnBiaUJTUjA0Z0tDVmtJSGRvWlc0Z2RHaGxjbVVnWVhKbElHOXViSGtnSldRcENnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWEk2SUc1MWJXSmxjaUJ2WmlCamIyMXdiMjVsYm5RZ2FYTWdibTkwSUdOdmJYQmhkR2xpYkdVZ2QybDBhQ0IwYUdVZ2NtVnRZV2x1YVc1bklHNTFiV0psY2lCdlppQndZWEpoYldWMFpYSnpJQ2dnSldRZ2RuTWdKV1FwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJR2x1ZG1Gc2FXUWdkR2xzWlNCemFYcGxJQ2gwWkhnNklDVmtMQ0IwWkhrNklDVmtLUW9BUW1Ga0lFTlBURklnYUdWaFpHVnlJR0p2ZUNBb1ltRmtJSE5wZW1VNklDVmtLUW9BUW1Ga0lFTlBURklnYUdWaFpHVnlJR0p2ZUNBb1EwbEZUR0ZpTENCaVlXUWdjMmw2WlRvZ0pXUXBDZ0JRVkVWU1RTQmphR1ZqYXlCbVlXbHNkWEpsT2lBbFpDQnlaVzFoYVc1cGJtY2dZbmwwWlhNZ2FXNGdZMjlrWlNCaWJHOWpheUFvSldRZ2RYTmxaQ0F2SUNWa0tRb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1QyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2dZMjl1WkdsMGFXOXVJR2x6SUc1dmRDQnRaWFE2SURJZ1BEMGdVMk4xY0NBOFBTQnRhVzRvVEdOMWNDd2dOREEzT1NrS0FFbHVkbUZzYVdRZ2RtRnNkV1Z6SUdadmNpQmpiMjF3SUQwZ0pXUWdPaUJ3Y21WalBTVjFJQ2h6YUc5MWJHUWdZbVVnWW1WMGQyVmxiaUF4SUdGdVpDQXpPQ0JoWTJOdmNtUnBibWNnZEc4Z2RHaGxJRXBRUlVjeU1EQXdJRzV2Y20wdUlFOXdaVzVLY0dWbklHOXViSGtnYzNWd2NHOXlkSE1nZFhBZ2RHOGdNekVwQ2dCSmJuWmhiR2xrSUdKcGRDQnVkVzFpWlhJZ0pXUWdhVzRnYjNCcVgzUXlYM0psWVdSZmNHRmphMlYwWDJobFlXUmxjaWdwQ2dCVGRISmxZVzBnWlhKeWIzSWhDZ0JGY25KdmNpQnZiaUIzY21sMGFXNW5JSE4wY21WaGJTRUtBRk4wY21WaGJTQnlaV0ZqYUdWa0lHbDBjeUJsYm1RZ0lRb0FSWGh3WldOMFpXUWdZU0JUVDBNZ2JXRnlhMlZ5SUFvQVNXNTJZV3hwWkNCaWIzZ2djMmw2WlNBbFpDQm1iM0lnWW05NElDY2xZeVZqSldNbFl5Y3VJRTVsWldRZ0pXUWdZbmwwWlhNc0lDVmtJR0o1ZEdWeklISmxiV0ZwYm1sdVp5QUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwY3lCc1lYSm5aWElnZEdoaGJpQjZaWEp2SUdKcGRIQnNZVzVsY3lBcklERWdDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQkVaV052WkdsdVp5QjBhR2x6SUdOdlpHVmliRzlqYXlCcGN5QnpkRzl3Y0dWa0xpQlZYM0VnYVhOc1lYSm5aWElnZEdoaGJpQmlhWFJ3YkdGdVpYTWdLeUF4SUFvQVEwOU1VaUJDVDFnZ2JXVjBhQ0IyWVd4MVpTQnBjeUJ1YjNRZ1lTQnlaV2QxYkdGeUlIWmhiSFZsSUNnbFpDa3NJSE52SUhkbElIZHBiR3dnYVdkdWIzSmxJSFJvWlNCbGJuUnBjbVVnUTI5c2IzVnlJRk53WldOcFptbGpZWFJwYjI0Z1ltOTRMaUFLQUZkb2FXeGxJSEpsWVdScGJtY2dRME5RWDFGT1ZGTlVXU0JsYkdWdFpXNTBJR2x1YzJsa1pTQlJRMFFnYjNJZ1VVTkRJRzFoY210bGNpQnpaV2R0Wlc1MExDQnVkVzFpWlhJZ2IyWWdjM1ZpWW1GdVpITWdLQ1ZrS1NCcGN5Qm5jbVZoZEdWeUlIUnZJRTlRU2w5S01rdGZUVUZZUWtGT1JGTWdLQ1ZrS1M0Z1UyOGdkMlVnYkdsdGFYUWdkR2hsSUc1MWJXSmxjaUJ2WmlCbGJHVnRaVzUwY3lCemRHOXlaV1FnZEc4Z1QxQktYMG95UzE5TlFWaENRVTVFVXlBb0pXUXBJR0Z1WkNCemEybHdJSFJvWlNCeVpYTjBMaUFLQUVwUU1pQkpTRVJTSUdKdmVEb2dZMjl0Y0hKbGMzTnBiMjRnZEhsd1pTQnBibVJwWTJGMFpTQjBhR0YwSUhSb1pTQm1hV3hsSUdseklHNXZkQ0JoSUdOdmJtWnZjbTFwYm1jZ1NsQXlJR1pwYkdVZ0tDVmtLU0FLQUZScGJHVWdhVzVrWlhnZ2NISnZkbWxrWldRZ1lua2dkR2hsSUhWelpYSWdhWE1nYVc1amIzSnlaV04wSUNWa0lDaHRZWGdnUFNBbFpDa2dDZ0JGY25KdmNpQmtaV052WkdsdVp5QmpiMjF3YjI1bGJuUWdKV1F1Q2xSb1pTQnVkVzFpWlhJZ2IyWWdjbVZ6YjJ4MWRHbHZibk1nZEc4Z2NtVnRiM1psSUNnbFpDa2dhWE1nWjNKbFlYUmxjaUJ2Y2lCbGNYVmhiQ0IwYUdGdUlIUm9aU0J1ZFcxaVpYSWdiMllnY21WemIyeDFkR2x2Ym5NZ2IyWWdkR2hwY3lCamIyMXdiMjVsYm5RZ0tDVmtLUXBOYjJScFpua2dkR2hsSUdOd1gzSmxaSFZqWlNCd1lYSmhiV1YwWlhJdUNnb0FTVzFoWjJVZ1pHRjBZU0JvWVhNZ1ltVmxiaUIxY0dSaGRHVmtJSGRwZEdnZ2RHbHNaU0FsWkM0S0NnQkJvUDBBQzRBZ0l3Q2xBRU1BWmdDREFPNm9GQURmMkNNQXZoQkRBUC8xZ3dCK0lGVUFYMUVqQURVQVF3Qk9SSU1BenNRVUFNL01Jd0QrNGtNQS81bURBSllBeFFBL01TTUFwUUJEQUY1RWd3RE95QlFBM3hFakFQNzBRd0QvL0lNQW5nQlZBSGNBSXdBMUFFTUEvL0dEQUs2SUZBQzNBQ01BL3ZoREFPL2tnd0NPaU1VQUh4RWpBS1VBUXdCbUFJTUE3cWdVQU45VUl3QytFRU1BN3lLREFINGdWUUIvSWlNQU5RQkRBRTVFZ3dET3hCUUF2eEVqQVA3aVF3RDNBSU1BbGdERkFEOGlJd0NsQUVNQVhrU0RBTTdJRkFEWEFDTUEvdlJEQVArNmd3Q2VBRlVBYndBakFEVUFRd0QvNW9NQXJvZ1VBSytpSXdEKytFTUE1d0NEQUk2SXhRQXZJZ0lBeFFDRUFINGdBZ0RPeENRQTl3QUNBUDZpUkFCV0FBSUFuZ0FVQU5jQUFnQytFSVFBWmdBQ0FLNklKQURmRVFJQTdxaEVBRFlBQWdDT2lCUUFIeEVDQU1VQWhBQnVBQUlBem9na0FQK0lBZ0QrdUVRQVRrUUNBSllBRkFDM0FBSUEvdVNFQUY1RUFnQ21BQ1FBNXdBQ0FONVVSQUF1SWdJQVBnQVVBSGNBQWdERkFJUUFmaUFDQU03RUpBRC84UUlBL3FKRUFGWUFBZ0NlQUJRQXZ4RUNBTDRRaEFCbUFBSUFyb2drQU84aUFnRHVxRVFBTmdBQ0FJNklGQUIvSWdJQXhRQ0VBRzRBQWdET2lDUUE3K1FDQVA2NFJBQk9SQUlBbGdBVUFLK2lBZ0QrNUlRQVhrUUNBS1lBSkFEZjJBSUEzbFJFQUM0aUFnQStBQlFBWDFFQ0FGVUFoQUJtQUFJQTNvZ2tBUDh5QWdEK0VVUUFUa1FDQUs0QUZBQzNBQUlBZmpHRUFGNVJBZ0RHQUNRQTF3QUNBTzRnUkFBZUVRSUFuZ0FVQUhjQUFnQlZBSVFBWGxRQ0FNNUVKQURuQUFJQS92RkVBRFlBQWdDbUFCUUFYMVVDQVA1MGhBQStFUUlBdmlBa0FIOTBBZ0RleEVRQS8vZ0NBSllBRkFBdklnSUFWUUNFQUdZQUFnRGVpQ1FBOXdBQ0FQNFJSQUJPUkFJQXJnQVVBSStJQWdCK01ZUUFYbEVDQU1ZQUpBRFB5QUlBN2lCRUFCNFJBZ0NlQUJRQWJ3QUNBRlVBaEFCZVZBSUF6a1FrQU4vUkFnRCs4VVFBTmdBQ0FLWUFGQUIvSWdJQS9uU0VBRDRSQWdDK0lDUUF2eUlDQU43RVJBRHZJZ0lBbGdBVUFEOHlBd0RlMVAzMC8vd1VBRDRSVlFDUGlBTUF2aktGQU9jQUpRQmVVZjZxZjNJREFNNUUvZmp2UkJRQWZtUkZBSytpQXdDbUFGMVYzNW45OFRZQS92VnZZZ01BM3RIOTlQL21GQUIrY1ZVQXY3RURBSzZJaFFEZjFTVUFUa1QrOG45bUF3REdBUDM0NytJVUFGNVVSUUNmRVFNQWxnQmRWYy9JL2ZFZUVlN0lad0FEQU43VS9mVC84eFFBUGhGVkFMOFJBd0MrTW9VQTM5Z2xBRjVSL3FvdklnTUF6a1Q5K1BjQUZBQitaRVVBbjVnREFLWUFYVlhYQVAzeE5nRCs5VzlFQXdEZTBmMzAvN2tVQUg1eFZRQzNBQU1Bcm9pRkFOL2NKUUJPUlA3eWR3QURBTVlBL2ZqdjVCUUFYbFJGQUg5ekF3Q1dBRjFWdjdqOThSNFI3c2cvTWdJQXBRQ0VBSDVBQWdEZUVDUUEzeEVDQVA1eVJBQldBQUlBcnFnVUFMK3lBZ0NXQUlRQVpnQUNBTVlBSkFEbkFBSUE3c2hFQUM0aUFnQ09pQlFBZHdBQ0FLVUFoQUJ1QUFJQXpvZ2tBUGNBQWdEK2tVUUFOZ0FDQUs2aUZBQ3ZxZ0lBL3JpRUFGNEFBZ0MrQUNRQXo4UUNBTzVFUkFELzlBSUFQaUlVQUI4UkFnQ2xBSVFBZmtBQ0FONFFKQUQvbVFJQS9uSkVBRllBQWdDdXFCUUF0d0FDQUpZQWhBQm1BQUlBeGdBa0FOY0FBZ0R1eUVRQUxpSUNBSTZJRkFCUFJBSUFwUUNFQUc0QUFnRE9pQ1FBNytJQ0FQNlJSQUEyQUFJQXJxSVVBSDlFQWdEK3VJUUFYZ0FDQUw0QUpBQ2ZBQUlBN2tSRUFQOTJBZ0ErSWhRQVB6RURBTVlBaFFELzJmM3lmbVQrOGIrWkF3Q3VvaVVBNzJiOTlGWUE3dUovY3dNQXZwaEZBUGNBL2ZobUFQNTJuNGdEQUk2SUZRRGYxYVVBTGlMZW1FOUVBd0Mrc29VQS8vejk4bTRpbGdDM0FBTUFycW9sQU4vUi9mUTJBTjdVYjJRREFLNm9SUUR2NnYzNFhrVHU2SDl4QXdBK01oVUF6OFNsQVAvNnpvZy9NUU1BeGdDRkFQOTMvZkorWlA3eHY3TURBSzZpSlFEbkFQMzBWZ0R1NG5jQUF3QyttRVVBNytUOStHWUEvblovWmdNQWpvZ1ZBTmNBcFFBdUl0NllQek1EQUw2eWhRRC9kZjN5YmlLV0FKK1JBd0N1cWlVQTM1bjk5RFlBM3RSZlVRTUFycWhGQU8vcy9maGVSTzdvZjNJREFENHlGUUMvc2FVQS8vUE9pQjhSQXdEZVZQM3lIaEVVQUg1ay92alB6QU1BdnBGRkFPOGlKUUF1SXY3emo0Z0RBTVlBaFFEM0FCUUFYaEgrL0srb0F3Q21BRFVBMzhqOThUNHgvbVp2WkFNQXpzajk4di8xRkFCbUFQNzB2N29EQUs0aVJRRG5BQ1VBUGpMKzZuOXpBd0Mrc29VQTMxVVVBRllBZm5HZkVRTUFsZ0ExQU0vRS9mRStNKzdvVDBRREFONVUvZkllRVJRQWZtVCsrTCtaQXdDK2tVVUE3K0lsQUM0aS92Ti9aZ01BeGdDRkFPL2tGQUJlRWY3OG41Z0RBS1lBTlFEWEFQM3hQakgrWm04aUF3RE95UDN5LzdrVUFHWUEvdlMzQUFNQXJpSkZBTi9SSlFBK012N3Fkd0FEQUw2eWhRRHY3QlFBVmdCK2NYOXlBd0NXQURVQXY3ajk4VDR6N3VoZlZQengzdEg5K3RjQS9QZ1dBUDMvZjNUODlINXgvZk8vcy96eTcrcnU2RTlFL1BHdUlnVUF2N2o4K1BjQS92eDNBUHowWGhIOTlYOTEvUExmMk83aVB6UDg4YjZ5L2ZyUGlQejQvL3Y5LzM5ei9QUnVBUDN6dHdEODh1OW0vdmsvTWZ6eG5nQUZBTCs2L1BqLy9mNzJad0Q4OUNZQS9mV1BpUHp5Mzl6ZTFDOGkvUEhlMGYzNno4VDgrQllBL2Y5L2N2ejBmbkg5ODcrWi9QTHY3TzdvUndEODhhNGlCUUNuQVB6NC8vZisvRmNBL1BSZUVmMzFsd0Q4OHQvVjd1STNBUHp4dnJMOStzY0EvUGovL3YzL2YyYjg5RzRBL2ZPdnFQenk1d0QrK1Q4eS9QR2VBQVVBdjdIOCtPL2svdlpmVlB6MEpnRDk5WWNBL1BMZm1kN1VIeEVUQUdVQVF3RGVBSU1BallnakFFNUVFd0NsQUVNQXJvaURBRFVBSXdEWEFCTUF4UUJEQUo0QWd3QlZBQ01BTGlJVEFKVUFRd0IrQUlNQS9oQWpBSGNBRXdCbEFFTUF6b2lEQUkySUl3QWVFUk1BcFFCREFGNEFnd0ExQUNNQTV3QVRBTVVBUXdDK0FJTUFWUUFqQVA4UkV3Q1ZBRU1BUGdDREFPNUFJd0N2b2hNQVpRQkRBTjRBZ3dDTmlDTUFUa1FUQUtVQVF3Q3VpSU1BTlFBakFPOUVFd0RGQUVNQW5nQ0RBRlVBSXdBdUloTUFsUUJEQUg0QWd3RCtFQ01BdHdBVEFHVUFRd0RPaUlNQWpZZ2pBQjRSRXdDbEFFTUFYZ0NEQURVQUl3RFB4Qk1BeFFCREFMNEFnd0JWQUNNQTl3QVRBSlVBUXdBK0FJTUE3a0FqQUc4QUFRQ0VBQUVBVmdBQkFCUUFBUURYQUFFQUpBQUJBSllBQVFCRkFBRUFkd0FCQUlRQUFRREdBQUVBRkFBQkFJK0lBUUFrQUFFQTl3QUJBRFVBQVFBdklnRUFoQUFCQVA1QUFRQVVBQUVBdHdBQkFDUUFBUUMvQUFFQVJRQUJBR2NBQVFDRUFBRUFwZ0FCQUJRQUFRQlBSQUVBSkFBQkFPY0FBUUExQUFFQVB4RUJBSVFBQVFCV0FBRUFGQUFCQU04QUFRQWtBQUVBbGdBQkFFVUFBUUJ2QUFFQWhBQUJBTVlBQVFBVUFBRUFud0FCQUNRQUFRRHZBQUVBTlFBQkFEOHlBUUNFQUFFQS9rQUJBQlFBQVFDdkFBRUFKQUFCQVA5RUFRQkZBQUVBWHdBQkFJUUFBUUNtQUFFQUZBQUJBSDhBQVFBa0FBRUEzd0FCQURVQUFRQWZFUUVBSkFBQkFGWUFBUUNGQUFFQXZ3QUJBQlFBQVFEM0FBRUF4Z0FCQUhjQUFRQWtBQUVBLy9nQkFFVUFBUUIvQUFFQUZBQUJBTjhBQVFDbUFBRUFQekVCQUNRQUFRQXVJZ0VBaFFBQkFMY0FBUUFVQUFFQTcwUUJBSzZpQVFCbkFBRUFKQUFCQVA5UkFRQkZBQUVBbHdBQkFCUUFBUURQQUFFQU5nQUJBRDhpQVFBa0FBRUFWZ0FCQUlVQUFRQy9zZ0VBRkFBQkFPOUFBUURHQUFFQWJ3QUJBQ1FBQVFEL2NnRUFSUUFCQUo4QUFRQVVBQUVBMXdBQkFLWUFBUUJQUkFFQUpBQUJBQzRpQVFDRkFBRUFyNmdCQUJRQUFRRG5BQUVBcnFJQkFGOEFBUUFrQUFFQS8wUUJBRVVBQVFDUGlBRUFGQUFCQUsrcUFRQTJBQUVBSHhFQ0FQNzRKQUJXQUFJQXRnQ0ZBUDltQWdET0FCUUFIaEVDQUpZQU5RQ3ZxQUlBOWdBa0FENHhBZ0NtQUVVQXY3TUNBTDZ5RkFELzlRSUFaZ0IrVVY5VUFnRCs4aVFBTGlJQ0FLNGloUUR2UkFJQXhnQVVBUC8wQWdCMkFEVUFmMFFDQU41QUpBQStNZ0lBbmdCRkFOY0FBZ0MraUJRQS8vb0NBRjRSL3ZGUFJBSUEvdmdrQUZZQUFnQzJBSVVBNzhnQ0FNNEFGQUFlRVFJQWxnQTFBSStJQWdEMkFDUUFQakVDQUtZQVJRRGZSQUlBdnJJVUFQK29BZ0JtQUg1UmJ3QUNBUDd5SkFBdUlnSUFyaUtGQU9jQUFnREdBQlFBNytJQ0FIWUFOUUIvY2dJQTNrQWtBRDR5QWdDZUFFVUF2N0VDQUw2SUZBRC9jd0lBWGhIKzhUOHpBUUNFQUFFQTdpQUJBTVVBQVFEUHhBRUFSQUFCQVA4eUFRQVZBQUVBajRnQkFJUUFBUUJtQUFFQUpRQUJBSzhBQVFCRUFBRUE3eUlCQUtZQUFRQmZBQUVBaEFBQkFFNUVBUURGQUFFQXo4d0JBRVFBQVFEM0FBRUFGUUFCQUc4QUFRQ0VBQUVBVmdBQkFDVUFBUUNmQUFFQVJBQUJBTjhBQVFEK01BRUFMeUlCQUlRQUFRRHVJQUVBeFFBQkFNL0lBUUJFQUFFQS94RUJBQlVBQVFCM0FBRUFoQUFCQUdZQUFRQWxBQUVBZndBQkFFUUFBUURuQUFFQXBnQUJBRGNBQVFDRUFBRUFUa1FCQU1VQUFRQzNBQUVBUkFBQkFMOEFBUUFWQUFFQVB3QUJBSVFBQVFCV0FBRUFKUUFCQUpjQUFRQkVBQUVBMXdBQkFQNHdBUUFmRVFJQTdxaEVBSTZJQWdEV0FNVUEvL01DQVA3OEpRQStBQUlBdGdCVkFOL1lBZ0QrK0VRQVpnQUNBSDRnaFFEL21RSUE1Z0QxQURZQUFnQ21BQlVBbndBQ0FQN3lSQUIyQUFJQXprVEZBUDkyQWdEKzhTVUFUa1FDQUs0QVZRRFB5QUlBL3ZSRUFGNUVBZ0MrRUlVQTcrUUNBTjVVOVFBZUVRSUFsZ0FWQUM4aUFnRHVxRVFBam9nQ0FOWUF4UUQvK2dJQS92d2xBRDRBQWdDMkFGVUF2eEVDQVA3NFJBQm1BQUlBZmlDRkFPOGlBZ0RtQVBVQU5nQUNBS1lBRlFCL0lnSUEvdkpFQUhZQUFnRE9STVVBLzlVQ0FQN3hKUUJPUkFJQXJnQlZBRzhBQWdEKzlFUUFYa1FDQUw0UWhRRGZFUUlBM2xUMUFCNFJBZ0NXQUJVQVgxRURBUFlBRkFBZUVVUUFqb2lsQU4vVUF3Q3VvbFVBLzNZa0FENGl0Z0N2cWdNQTVnQVVBUC8xUkFCbUFJVUF6OHdEQUo0QXhRRHZSQ1FBTmdEKytIOHhBd0R1NkJRQS8vRkVBSFlBcFFEUHhBTUFmaUpWQU4vUkpBQk9SUDcwWDFFREFOWUFGQUR2NGtRQVhrU0ZBTDhpQXdDV0FNVUEzOGdrQUM0aS92SnZJZ01BOWdBVUFCNFJSQUNPaUtVQXY3RURBSzZpVlFEL015UUFQaUsyQUsrb0F3RG1BQlFBLzdsRUFHWUFoUUMvcUFNQW5nREZBTy9rSkFBMkFQNzRiMlFEQU83b0ZBRC8vRVFBZGdDbEFNL0lBd0IrSWxVQTcrb2tBRTVFL3ZSL2RBTUExZ0FVQVAvNlJBQmVSSVVBdjdJREFKWUF4UURmUkNRQUxpTCs4ajh4OHdEKyt2M3hOZ0FFQUw0eWRRRGZFZk1BM2xUOTh1L2sxUUIrY2Y3OGYzUHpBUDd6L2ZnZUVRUUFsZ0JWQUwreDh3RE9BTFVBMzlqOTlHWUEvcmxmVlBNQS9uYjk4U1lBQkFDbUFIVUFud0R6QUs0QS9mTC85OVVBUmdEKzlYOTA4d0RtQVAzNEZnQUVBSVlBVlFDUGlQTUF4Z0MxQU8vaS9mUmVFZTZvUHhIekFQNzYvZkUyQUFRQXZqSjFBTi9SOHdEZVZQM3kvL3ZWQUg1eC92eC9SUE1BL3ZQOStCNFJCQUNXQUZVQWYzTHpBTTRBdFFEdkl2MzBaZ0QrdVU5RTh3RCtkdjN4SmdBRUFLWUFkUUMvRWZNQXJnRDk4di8vMVFCR0FQNzFQekx6QU9ZQS9mZ1dBQVFBaGdCVkFHOEE4d0RHQUxVQXY3ajk5RjRSN3FndklnQkJySjBCQzZRZUFRQUFBQUVBQUFBQkFBQUFBZ0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJRQUFBTGNoUWlGbklVSWhFUkVSRVRNek16TjNkM2QzQUFBQUFBQUFBQUFCVmdBQUFBQUFBQkJQQUFBZ1R3QUFBVllBQUFFQUFBQWdUd0FBRUU4QUFBRTBBQUFBQUFBQU1FOEFBTEJQQUFBQk5BQUFBUUFBQUVCUEFBREFUd0FBQVJnQUFBQUFBQUJRVHdBQUVGQUFBQUVZQUFBQkFBQUFZRThBQUNCUUFBREJDZ0FBQUFBQUFIQlBBQUJ3VUFBQXdRb0FBQUVBQUFDQVR3QUFnRkFBQUNFRkFBQUFBQUFBa0U4QUFKQlNBQUFoQlFBQUFRQUFBS0JQQUFDZ1VnQUFJUUlBQUFBQUFBQ3dVd0FBRUZNQUFDRUNBQUFCQUFBQXdGTUFBQ0JUQUFBQlZnQUFBQUFBQU5CUEFBREFUd0FBQVZZQUFBRUFBQURnVHdBQXNFOEFBQUZVQUFBQUFBQUE4RThBQUxCUUFBQUJWQUFBQVFBQUFBQlFBQURBVUFBQUFVZ0FBQUFBQUFBUVVBQUFzRkFBQUFGSUFBQUJBQUFBSUZBQUFNQlFBQUFCT0FBQUFBQUFBREJRQUFDd1VBQUFBVGdBQUFFQUFBQkFVQUFBd0ZBQUFBRXdBQUFBQUFBQVVGQUFBQkJSQUFBQk1BQUFBUUFBQUdCUUFBQWdVUUFBQVNRQUFBQUFBQUJ3VUFBQU1GRUFBQUVrQUFBQkFBQUFnRkFBQUVCUkFBQUJIQUFBQUFBQUFKQlFBQUJ3VVFBQUFSd0FBQUVBQUFDZ1VBQUFnRkVBQUFFV0FBQUFBQUFBa0ZJQUFKQlJBQUFCRmdBQUFRQUFBS0JTQUFDZ1VRQUFBVllBQUFBQUFBRFFVQUFBd0ZBQUFBRldBQUFCQUFBQTRGQUFBTEJRQUFBQlZBQUFBQUFBQVBCUUFBQ3dVQUFBQVZRQUFBRUFBQUFBVVFBQXdGQUFBQUZSQUFBQUFBQUFFRkVBQU5CUUFBQUJVUUFBQVFBQUFDQlJBQURnVUFBQUFVZ0FBQUFBQUFBd1VRQUE4RkFBQUFGSUFBQUJBQUFBUUZFQUFBQlJBQUFCT0FBQUFBQUFBRkJSQUFBUVVRQUFBVGdBQUFFQUFBQmdVUUFBSUZFQUFBRTBBQUFBQUFBQWNGRUFBREJSQUFBQk5BQUFBUUFBQUlCUkFBQkFVUUFBQVRBQUFBQUFBQUNRVVFBQVVGRUFBQUV3QUFBQkFBQUFvRkVBQUdCUkFBQUJLQUFBQUFBQUFMQlJBQUJRVVFBQUFTZ0FBQUVBQUFEQVVRQUFZRkVBQUFFa0FBQUFBQUFBMEZFQUFIQlJBQUFCSkFBQUFRQUFBT0JSQUFDQVVRQUFBU0lBQUFBQUFBRHdVUUFBa0ZFQUFBRWlBQUFCQUFBQUFGSUFBS0JSQUFBQkhBQUFBQUFBQUJCU0FBQ3dVUUFBQVJ3QUFBRUFBQUFnVWdBQXdGRUFBQUVZQUFBQUFBQUFNRklBQU5CUkFBQUJHQUFBQVFBQUFFQlNBQURnVVFBQUFSWUFBQUFBQUFCUVVnQUE4RkVBQUFFV0FBQUJBQUFBWUZJQUFBQlNBQUFCRkFBQUFBQUFBSEJTQUFBUVVnQUFBUlFBQUFFQUFBQ0FVZ0FBSUZJQUFBRVNBQUFBQUFBQWtGSUFBREJTQUFBQkVnQUFBUUFBQUtCU0FBQkFVZ0FBQVJFQUFBQUFBQUN3VWdBQVVGSUFBQUVSQUFBQkFBQUF3RklBQUdCU0FBREJDZ0FBQUFBQUFOQlNBQUJ3VWdBQXdRb0FBQUVBQUFEZ1VnQUFnRklBQU1FSkFBQUFBQUFBOEZJQUFKQlNBQURCQ1FBQUFRQUFBQUJUQUFDZ1VnQUFvUWdBQUFBQUFBQVFVd0FBc0ZJQUFLRUlBQUFCQUFBQUlGTUFBTUJTQUFBaEJRQUFBQUFBQURCVEFBRFFVZ0FBSVFVQUFBRUFBQUJBVXdBQTRGSUFBRUVFQUFBQUFBQUFVRk1BQVBCU0FBQkJCQUFBQVFBQUFHQlRBQUFBVXdBQW9RSUFBQUFBQUFCd1V3QUFFRk1BQUtFQ0FBQUJBQUFBZ0ZNQUFDQlRBQUFoQWdBQUFBQUFBSkJUQUFBd1V3QUFJUUlBQUFFQUFBQ2dVd0FBUUZNQUFFRUJBQUFBQUFBQXNGTUFBRkJUQUFCQkFRQUFBUUFBQU1CVEFBQmdVd0FBRVFFQUFBQUFBQURRVXdBQWNGTUFBQkVCQUFBQkFBQUE0Rk1BQUlCVEFBQ0ZBQUFBQUFBQUFQQlRBQUNRVXdBQWhRQUFBQUVBQUFBQVZBQUFvRk1BQUVrQUFBQUFBQUFBRUZRQUFMQlRBQUJKQUFBQUFRQUFBQ0JVQUFEQVV3QUFKUUFBQUFBQUFBQXdWQUFBMEZNQUFDVUFBQUFCQUFBQVFGUUFBT0JUQUFBVkFBQUFBQUFBQUZCVUFBRHdVd0FBRlFBQUFBRUFBQUJnVkFBQUFGUUFBQWtBQUFBQUFBQUFjRlFBQUJCVUFBQUpBQUFBQVFBQUFJQlVBQUFnVkFBQUJRQUFBQUFBQUFDUVZBQUFNRlFBQUFVQUFBQUJBQUFBb0ZRQUFFQlVBQUFCQUFBQUFBQUFBSkJVQUFCUVZBQUFBUUFBQUFFQUFBQ2dWQUFBWUZRQUFBRldBQUFBQUFBQXNGUUFBTEJVQUFBQlZnQUFBUUFBQU1CVUFBREFWQUFBQUFFREF3RUNBd01GQmdjSEJnWUhCd0FCQXdNQkFnTURCUVlIQndZR0J3Y0ZCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJRWUhCd1lHQndjSUNBZ0lDQWdJQ0FFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NCQWdNREFnSURBd1lHQndjR0JnY0hCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBWUdCd2NHQmdjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBRUNBd01DQWdNREJnWUhCd1lHQndjQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0NBZ01EQWdJREF3WUdCd2NHQmdjSEFnSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdBQVFVR0FRSUdCZ01EQndjREF3Y0hBQUVGQmdFQ0JnWURBd2NIQXdNSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjREF3Y0hBd01IQndRRUJ3Y0VCQWNIQVFJR0JnSUNCZ1lEQXdjSEF3TUhCd0VDQmdZQ0FnWUdBd01IQndNREJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEF3TUhCd01EQndjRUJBY0hCQVFIQndVR0NBZ0dCZ2dJQndjSUNBY0hDQWdGQmdnSUJnWUlDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnR0JnZ0lCZ1lJQ0FjSENBZ0hCd2dJQmdZSUNBWUdDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUFRSUdCZ0lDQmdZREF3Y0hBd01IQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3SUNCZ1lDQWdZR0F3TUhCd01EQndjQ0FnWUdBZ0lHQmdNREJ3Y0RBd2NIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBWUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQUFCQXdNQkFnTURCUVlIQndZR0J3Y0FBUU1EQVFJREF3VUdCd2NHQmdjSEJRWUhCd1lHQndjSUNBZ0lDQWdJQ0FVR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdCQWdNREFnSURBd1lHQndjR0JnY0hBUUlEQXdJQ0F3TUdCZ2NIQmdZSEJ3WUdCd2NHQmdjSENBZ0lDQWdJQ0FnR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQXdNRUJBTURCQVFIQndjSEJ3Y0hCd01EQkFRREF3UUVCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUFnSURBd0lDQXdNR0JnY0hCZ1lIQndJQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBQU1CQkFNR0JBY0JCQUlGQkFjRkJ3QURBUVFEQmdRSEFRUUNCUVFIQlFjQkJBSUZCQWNGQndJRkFnVUZCd1VIQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd01HQkFjR0NBY0lCQWNGQndjSUJ3Z0RCZ1FIQmdnSENBUUhCUWNIQ0FjSUJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dCQkFJRkJBY0ZCd0lGQWdVRkJ3VUhBUVFDQlFRSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndJRkFnVUZCd1VIQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnRkJ3VUhCd2dIQ0FNR0JBY0dDQWNJQkFjRkJ3Y0lCd2dEQmdRSEJnZ0hDQVFIQlFjSENBY0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnR0NBY0lDQWdJQ0FjSUJ3Z0lDQWdJQmdnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0pDUW9LQ1FrS0Nnd01EUXNNREEwTENRa0tDZ2tKQ2dvTURBc05EQXdMRFF3TURRME1EQXNMREFrTkNna01DZ3NNREFzTERBd05EUXdKQ3dvSkRBb05DUWtLQ2drSkNnb01EQTBMREF3TkN3a0pDZ29KQ1FvS0RBd0xEUXdNQ3cwTURBME5EQXdMQ3d3SkRRb0pEQW9MREF3TEN3d01EUTBNQ1FzS0NRd0tEUW9LQ2dvS0Nnb0tEUXNOQ3cwTERRc0tDZ2tKQ2dvSkNRMExEQXdOQ3d3TURRME5EUXNMQ3dzTkNnMEtDZ3NLQ3cwTkRBd0xDd3dNRFFvTUNRb0xDUXdLQ2drSkNnb0pDUXNOREF3TERRd01DZ29LQ2dvS0Nnb0xEUXNOQ3cwTERRc0xEQXdORFF3TUN3b01DUW9OQ1F3TEN3c0xEUTBORFFzS0N3b0tEUW9OQUVIWnV3RUxOd0VBQVFBQkFBRUFBQUVCQUFBQkFRQUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFRQUJBUUVBUVptOEFRczNBUUFCQUFFQUFRQUFBUUVBQUFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQUFBQUFBUUFCQUFBQUFBRUJBUUVBQUFBQkFBRUJBUUJCMmJ3QkN3Y0JBQUVBQVFBQkFFSHB2QUVMbFFJQkFBRUFBUUFCQUFBQUFBRUJBUUVBQUFBQUFBRUFBUUFBQUFBQkFRRUJBQUFBQUFBQkFBRUJBUUFBQVFFQUFBQUJBQUVBQVFBQkFRRUJBUUVCQVFFQUFRQUJBQUVBQVFBQUFBQUJBUUVCQUFFQUFBRUJBQUVBQUFBQUFRRUJBUUFCQUFFQkFRRUJBZ0FBQUFRQUFBQUVBQUFBQ0FBQUFKRC9BQUFNQUFBQUdBQUFBRkwvQUFBVUFBQUFHUUFBQUZQL0FBQVVBQUFBR2dBQUFGNy9BQUFVQUFBQUd3QUFBRnovQUFBVUFBQUFIQUFBQUYzL0FBQVVBQUFBSFFBQUFGLy9BQUFVQUFBQUhnQUFBRkgvQUFBQ0FBQUFId0FBQUZYL0FBQUVBQUFBSUFBQUFGZi9BQUFFQUFBQUlRQUFBRmovQUFBUUFBQUFJZ0FBQUdEL0FBQUVBQUFBSXdBQUFHSC9BQUFRQUFBQUpBQUFBSkgvQUVHSXZ3RUxaV1AvQUFBRUFBQUFKUUFBQUdUL0FBQVVBQUFBSmdBQUFIVC9BQUFVQUFBQUp3QUFBSGovQUFBRUFBQUFLQUFBQUZEL0FBQUVBQUFBS1FBQUFGbi9BQUFFQUFBQUtnQUFBSFgvQUFBVUFBQUFLd0FBQUhmL0FBQVVBQUFBTEFBQUFBQUFBQUFVQUVHQXdBRUxOUzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTWdBQUFETUFBQUEwQUFBQUlDQlFhallBQUFCd2VYUm1Od0FBQUdneWNHbzRBRUhBd0FFTE1uSmthR2s1QUFBQWNteHZZem9BQUFCalkzQmlPd0FBQUhKc1kzQThBQUFBY0dGdFl6MEFBQUJtWldSalBnQUFBUGhpQUVHQXdRRUxRUmtBQ3dBWkdSa0FBQUFBQlFBQUFBQUFBQWtBQUFBQUN3QUFBQUFBQUFBQUdRQUtDaGtaR1FNS0J3QUJBQWtMR0FBQUNRWUxBQUFMQUFZWkFBQUFHUmtaQUVIUndRRUxJUTRBQUFBQUFBQUFBQmtBQ3cwWkdSa0FEUUFBQWdBSkRnQUFBQWtBRGdBQURnQkJpOElCQ3dFTUFFR1h3Z0VMRlJNQUFBQUFFd0FBQUFBSkRBQUFBQUFBREFBQURBQkJ4Y0lCQ3dFUUFFSFJ3Z0VMRlE4QUFBQUVEd0FBQUFBSkVBQUFBQUFBRUFBQUVBQkIvOElCQ3dFU0FFR0x3d0VMSGhFQUFBQUFFUUFBQUFBSkVnQUFBQUFBRWdBQUVnQUFHZ0FBQUJvYUdnQkJ3c01CQ3c0YUFBQUFHaG9hQUFBQUFBQUFDUUJCODhNQkN3RVVBRUgvd3dFTEZSY0FBQUFBRndBQUFBQUpGQUFBQUFBQUZBQUFGQUJCcmNRQkN3RVdBRUc1eEFFTEp4VUFBQUFBRlFBQUFBQUpGZ0FBQUFBQUZnQUFGZ0FBTURFeU16UTFOamM0T1VGQ1EwUkZSZ0JCNE1RQkN3bVFiQUVBQUFBQUFBVUFRZlRFQVFzQmFRQkJqTVVCQ3dwcUFBQUFhd0FBQUhob0FFR2t4UUVMQVFJQVFiVEZBUXNJLy8vLy8vLy8vLzhBUWZqRkFRc0JCUUJCaE1ZQkN3RnNBRUdjeGdFTERtb0FBQUJ0QUFBQWlHZ0FBQUFFQUVHMHhnRUxBUUVBUWNUR0FRc0YvLy8vL3dvPSIpO3JldHVybiByZWNlaXZlSW5zdGFuY2UoaW5zdGFudGlhdGVTeW5jKHUsZSlbMF0pfSgpO0cucSxhLl9tYWxsb2M9Ry5yLGEuX2ZyZWU9Ry5zLGEuX2pwMl9kZWNvZGU9Ry51O3c9ZnVuY3Rpb24gcnVuQ2FsbGVyKCl7RHx8cnVuKCk7RHx8KHc9cnVuQ2FsbGVyKX07ZnVuY3Rpb24gcnVuKCl7aWYoIShtPjApKXshZnVuY3Rpb24gcHJlUnVuKCl7aWYoYS5wcmVSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnByZVJ1biYmKGEucHJlUnVuPVthLnByZVJ1bl0pO2Zvcig7YS5wcmVSdW4ubGVuZ3RoOyllPWEucHJlUnVuLnNoaWZ0KCksZC51bnNoaWZ0KGUpfXZhciBlO2NhbGxSdW50aW1lQ2FsbGJhY2tzKGQpfSgpO2lmKCEobT4wKSlpZihhLnNldFN0YXR1cyl7YS5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YS5zZXRTdGF0dXMoIiIpfSksMSk7ZG9SdW4oKX0pLDEpfWVsc2UgZG9SdW4oKX1mdW5jdGlvbiBkb1J1bigpe2lmKCFEKXtEPSEwO2EuY2FsbGVkUnVuPSEwOyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2NhbGxSdW50aW1lQ2FsbGJhY2tzKGYpfSgpO3QoYSk7YS5vblJ1bnRpbWVJbml0aWFsaXplZCYmYS5vblJ1bnRpbWVJbml0aWFsaXplZCgpOyFmdW5jdGlvbiBwb3N0UnVuKCl7aWYoYS5wb3N0UnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wb3N0UnVuJiYoYS5wb3N0UnVuPVthLnBvc3RSdW5dKTtmb3IoO2EucG9zdFJ1bi5sZW5ndGg7KWU9YS5wb3N0UnVuLnNoaWZ0KCkscC51bnNoaWZ0KGUpfXZhciBlO2NhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpfX19aWYoYS5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTtmb3IoO2EucHJlSW5pdC5sZW5ndGg+MDspYS5wcmVJbml0LnBvcCgpKCl9cnVuKCk7cmV0dXJuIGF9KTtjb25zdCBDaT1jaTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIG90e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyN5PW51bGw7c3RhdGljIGRlY29kZShlLHQpe3R8fD17fTt0aGlzLiN5fHw9Q2koe3dhcm59KTtjb25zdCBpPXRoaXMuI3kuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI3k9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlKX1kZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1KcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscj17ZWFybHlDaGFuZ2U6aSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtyLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtyLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1yfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxpPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9aT1pPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9aTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGk+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsaSxhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IG49ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxnPXIuZGljdGlvbmFyeUxlbmd0aHMsYz1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IEM9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCBsPXIuY3VycmVudFNlcXVlbmNlO2xldCBRPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLEU9MCx1PXRoaXMuYnVmZmVyTGVuZ3RoLGQ9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhDKSxyPVE+MDtpZihlPDI1Nil7bFswXT1lO1E9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7Qz05O249MjU4O1E9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPG4pe1E9Z1tlXTtmb3IodD1RLTEsaT1lO3Q+PTA7dC0tKXtsW3RdPW9baV07aT1jW2ldfX1lbHNlIGxbUSsrXT1sWzBdfWlmKHIpe2Nbbl09aDtnW25dPWdbaF0rMTtvW25dPWxbMF07bisrO0M9bitzJm4rcy0xP0M6MHxNYXRoLm1pbihNYXRoLmxvZyhuK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtFKz1RO2lmKGE8RSl7ZG97YSs9NTEyfXdoaWxlKGE8RSk7ZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8UTt0KyspZFt1KytdPWxbdF19ci5uZXh0Q29kZT1uO3IuY29kZUxlbmd0aD1DO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1RO3RoaXMuYnVmZmVyTGVuZ3RoPXV9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1pLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPWkuZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1pLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dGhpcy5jb2x1bW5zPWkuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPW4qcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgbixvPTAsZz0wLGM9MCxDPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3Iobj0wO248ZTsrK24pe2xldCBlPXNbbl1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2lbaCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihuPTA7bjxyOysrbilpW2grK109c1tuXTtmb3IoO248ZTsrK24pe2lbaF09aVtoLXJdK3Nbbl07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKG49MDtuPHQ7KytuKWlbaCsrXT1zW25dO2Zvcig7bjxlO24rPTIpe2NvbnN0IGU9KCgyNTUmc1tuXSk8PDgpKygyNTUmc1tuKzFdKSsoKDI1NSZpW2gtdF0pPDw4KSsoMjU1JmlbaC10KzFdKTtpW2grK109ZT4+OCYyNTU7aVtoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCBsPTAsUT10O2NvbnN0IEU9dGhpcy5jb2x1bW5zO2ZvcihuPTA7bjxFOysrbilmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihjPGEpe289bzw8OHwyNTUmc1tsKytdO2MrPTh9ZVt0XT1lW3RdKyhvPj5jLWEpJmg7Yy09YTtnPWc8PGF8ZVt0XTtDKz1hO2lmKEM+PTgpe2lbUSsrXT1nPj5DLTgmMjU1O0MtPTh9fUM+MCYmKGlbUSsrXT0oZzw8OC1DKSsobyYoMTw8OC1DKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxpPXRoaXMuc3RyLmdldEJ5dGUoKSxhPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IG49cy5zdWJhcnJheShyLWUscik7MD09PW4ubGVuZ3RoJiYobj1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sZyxjLEM9cjtzd2l0Y2goaSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW0MrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbQysrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tDXT1zW0MtdF0rYVtvXSYyNTU7QysrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tDKytdPW5bb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW0MrK109KG5bb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW0NdPShuW29dK3NbQy10XT4+MSkrYVtvXSYyNTU7QysrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2c9bltvXTtjPWFbb107c1tDKytdPWcrY31mb3IoO288ZTsrK28pe2c9bltvXTtjb25zdCBlPW5bby10XSxpPXNbQy10XSxyPWkrZy1lO2xldCBoPXItaTtoPDAmJihoPS1oKTtsZXQgbD1yLWc7bDwwJiYobD0tbCk7bGV0IFE9ci1lO1E8MCYmKFE9LVEpO2M9YVtvXTtzW0MrK109aDw9bCYmaDw9UT9pK2M6bDw9UT9nK2M6ZStjfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7aX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7dFtpKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKGEpO3Quc2V0KGUsaSk7aSs9YX19ZWxzZXthPTI1Ny1hO2NvbnN0IHI9ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXRbaSsrXT1yfXRoaXMuYnVmZmVyTGVuZ3RoPWl9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmk9ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9aTt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBpPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT15dDspaS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT15dCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGk7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gaTtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT15dDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXl0KWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PXl0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGk9ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBpPWUucGVla0J5dGVzKDE1KSxuPWkubGVuZ3RoO2lmKDA9PT1uKWJyZWFrO2ZvcihsZXQgZT0wO2U8bjtlKyspe2E9aVtlXTtpZigoMCE9PWF8fDA9PT1pW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpLnNsaWNlKCkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBnPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PXl0KXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgaT10W2UuY21kXTtpZighaSl7cz0wO2JyZWFrfWlmKGkudmFyaWFibGVBcmdzP2c8PWkubnVtQXJnczpnPT09aS5udW1BcmdzKWJyZWFrO2c9MH1lbHNlIGcrK31pZigyPT09cylicmVha31lbHNlIHM9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihyKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXIpKX19bGV0IG49NDtlLnNraXAoLW4pO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChuKTtpc1doaXRlU3BhY2UoYSl8fG4tLTtyZXR1cm4gZS5wb3Mtbi1pfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaSxhLHI9ITE7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09aSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpyPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihyKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWkpe2NvbnN0IHQ9ZS5wb3M7aT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoaSk7KXtlLnNraXAoKTtpPWUucGVla0J5dGUoKX1pZig2Mj09PWkpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1pOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGk9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09aSlpPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09aSlpPTczPT09dD8yOjA7ZWxzZSBpZigyPT09aSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGk9dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09eXQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09eXQpYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHI9aS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEuRnx8YS5GaWx0ZXIpO2xldCBuO2lmKHMgaW5zdGFuY2VvZiBOYW1lKW49cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihzWzBdKTtlIGluc3RhbmNlb2YgTmFtZSYmKG49ZS5uYW1lKX1jb25zdCBvPWkucG9zO2xldCBnLGM7c3dpdGNoKG4pe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zz10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zz10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zz10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGc8MWUzJiZyPjApe2NvbnN0IGU9aS5wb3M7aS5wb3M9dC5iZWdpbklubGluZUltYWdlUG9zO2M9ZnVuY3Rpb24gZ2V0SW5saW5lSW1hZ2VDYWNoZUtleShlKXtjb25zdCB0PVtdLGk9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8aS0xOyl0LnB1c2goZVthKytdPDw4fGVbYSsrXSk7YTxpJiZ0LnB1c2goZVthXSk7cmV0dXJuIGkrIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KX0oaS5nZXRCeXRlcyhyK2cpKTtpLnBvcz1lO2NvbnN0IGE9dGhpcy5pbWFnZUNhY2hlW2NdO2lmKHZvaWQgMCE9PWEpe3RoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTthLnJlc2V0KCk7cmV0dXJuIGF9fWNvbnN0IEM9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBhKUMuc2V0KGUsYVtlXSk7bGV0IGg9aS5tYWtlU3ViU3RyZWFtKG8sZyxDKTtlJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGcpKTtoPXRoaXMuZmlsdGVyKGgsQyxnKTtoLmRpY3Q9QztpZih2b2lkIDAhPT1jKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbY109aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I3coZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBpPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9aS5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3Qgbj10LnBlZWtCeXRlcygyMDQ4KSxvPW4ubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgZz0wO2Zvcig7ZzxvOyl7bGV0IG89MDtmb3IoO288YSYmbltnK29dPT09aVtvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmbltnK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UobltnK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5pLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9ZztyZXR1cm4gdC5wb3MtZX19ZysrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBpPXRoaXMubGV4ZXI7bGV0IGE9aS5zdHJlYW07aS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7aS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI3cocik7aWYoczwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtpLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocixzLGUpO3QmJihhPXQuY3JlYXRlU3RyZWFtKGEscykpO2E9dGhpcy5maWx0ZXIoYSxlLHMpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsaSl7bGV0IGE9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYoYSBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUsaSxyKX1sZXQgcz1pO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YSxpPXI7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87KytuKXthPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbbl0pO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke2F9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGkpJiZuIGluIGkmJihyPXRoaXMueHJlZi5mZXRjaElmUmVmKGlbbl0pKTtlPXRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxzLHIpO3M9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsaSxhKXtpZigwPT09aSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGkpLGksYSk6bmV3IEZsYXRlU3RyZWFtKGUsaSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGksdCksaSxhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGksdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxpLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxpLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiBuZXcgQXNjaWk4NVN0cmVhbShlLGkpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKGUsaSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgQ0NJVFRGYXhTdHJlYW0oZSxpLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4gbmV3IFJ1bkxlbmd0aFN0cmVhbShlLGkpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgSmJpZzJTdHJlYW0oZSxpLGEpfXdhcm4oYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJbnZhbGlkIHN0cmVhbTogIiR7ZX0iYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfX19Y29uc3QgaGk9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxpPTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7aT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCByPWUtNDgscz0wLG49MTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7Y29uc3QgYT1lLTQ4O2lmKHQpcz0xMCpzK2E7ZWxzZXswIT09aSYmKGkqPTEwKTtyPTEwKnIrYX19ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1pKWJyZWFrO2k9MX1lbHNlIGlmKDQ1PT09ZSl3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztlPXRoaXMucGVla0NoYXIoKTtpZig0Mz09PWV8fDQ1PT09ZSl7bj00NT09PWU/LTE6MTt0aGlzLm5leHRDaGFyKCl9ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9MCE9PWkmJihyLz1pKTt0JiYocio9MTAqKihuKnMpKTtyZXR1cm4gYSpyfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2kucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGkucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDppLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6aS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmkucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmkucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjppLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3I9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtyPSExO2U9KGU8PDMpKygxNSZhKX19aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7cnx8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gaS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhaGlbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoaGlbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7aS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHI9dG9IZXhEaWdpdChlKTtpZigtMT09PXIpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGhpW2VdKWJyZWFrO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHIpKX1lbHNlIGkucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7aS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7aS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGkuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fHdhcm4oYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6d2FybigiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0LGksYT10aGlzLmN1cnJlbnRDaGFyLHI9ITA7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO2Zvcig7Oyl7aWYoYTwwKXt3YXJuKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09YSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1oaVthXSl7aWYocil7dD10b0hleERpZ2l0KGEpO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihhKTthPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXtpPXRvSGV4RGlnaXQoYSk7aWYoLTE9PT1pKXt0aGlzLl9oZXhTdHJpbmdXYXJuKGEpO2E9dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8aSkpfXI9IXI7YT10aGlzLm5leHRDaGFyKCl9ZWxzZSBhPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIHl0O2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWhpW3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiWyIpO2Nhc2UgOTM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPDwiKX1yZXR1cm4gdGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI+PiIpfXJldHVybiBDbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ9Iik7Y2FzZSA0MTp0aGlzLm5leHRDaGFyKCk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBpPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldChpKX19Y29uc3QgYT10aGlzLmtub3duQ29tbWFuZHM7bGV0IHI9dm9pZCAwIT09YT8uW2ldO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWhpW3RdOyl7Y29uc3QgZT1pK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYociYmdm9pZCAwPT09YVtlXSlicmVhaztpZigxMjg9PT1pLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYENvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICR7aS5sZW5ndGh9YCk7aT1lO3I9dm9pZCAwIT09YT8uW2ldfWlmKCJ0cnVlIj09PWkpcmV0dXJuITA7aWYoImZhbHNlIj09PWkpcmV0dXJuITE7aWYoIm51bGwiPT09aSlyZXR1cm4gbnVsbDsiQkkiPT09aSYmKHRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz10aGlzLnN0cmVhbS5wb3MpO3JldHVybiBDbWQuZ2V0KGkpfXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsaT0hMSl7Y29uc3QgYT1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiYoaT9hPj0wOmE+MCkpcmV0dXJuIGE7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksaT10LmdldE9iaigpLGE9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBuLG87aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZOdW1iZXIuaXNJbnRlZ2VyKGEpJiZpc0NtZChyLCJvYmoiKSYmcyBpbnN0YW5jZW9mIERpY3QmJiJudW1iZXIiPT10eXBlb2Yobj1zLmdldCgiTGluZWFyaXplZCIpKSYmbj4wKSlyZXR1cm4gbnVsbDtpZigobz1nZXRJbnQocywiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOm8saGludHM6ZnVuY3Rpb24gZ2V0SGludHMoZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCBpO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KGk9dC5sZW5ndGgpfHw0PT09aSkpe2ZvcihsZXQgZT0wO2U8aTtlKyspe2NvbnN0IGk9dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIoaSkmJmk+MCkpdGhyb3cgbmV3IEVycm9yKGBIaW50ICgke2V9KSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0ocyksb2JqZWN0TnVtYmVyRmlyc3Q6Z2V0SW50KHMsIk8iKSxlbmRGaXJzdDpnZXRJbnQocywiRSIpLG51bVBhZ2VzOmdldEludChzLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OmdldEludChzLCJUIikscGFnZUZpcnN0OnMuaGFzKCJQIik/Z2V0SW50KHMsIlAiLCEwKTowfX19Y29uc3QgbGk9WyJBZG9iZS1HQjEtVUNTMiIsIkFkb2JlLUNOUzEtVUNTMiIsIkFkb2JlLUphcGFuMS1VQ1MyIiwiQWRvYmUtS29yZWExLVVDUzIiLCI3OC1FVUMtSCIsIjc4LUVVQy1WIiwiNzgtSCIsIjc4LVJLU0otSCIsIjc4LVJLU0otViIsIjc4LVYiLCI3OG1zLVJLU0otSCIsIjc4bXMtUktTSi1WIiwiODNwdi1SS1NKLUgiLCI5MG1zLVJLU0otSCIsIjkwbXMtUktTSi1WIiwiOTBtc3AtUktTSi1IIiwiOTBtc3AtUktTSi1WIiwiOTBwdi1SS1NKLUgiLCI5MHB2LVJLU0otViIsIkFkZC1IIiwiQWRkLVJLU0otSCIsIkFkZC1SS1NKLVYiLCJBZGQtViIsIkFkb2JlLUNOUzEtMCIsIkFkb2JlLUNOUzEtMSIsIkFkb2JlLUNOUzEtMiIsIkFkb2JlLUNOUzEtMyIsIkFkb2JlLUNOUzEtNCIsIkFkb2JlLUNOUzEtNSIsIkFkb2JlLUNOUzEtNiIsIkFkb2JlLUdCMS0wIiwiQWRvYmUtR0IxLTEiLCJBZG9iZS1HQjEtMiIsIkFkb2JlLUdCMS0zIiwiQWRvYmUtR0IxLTQiLCJBZG9iZS1HQjEtNSIsIkFkb2JlLUphcGFuMS0wIiwiQWRvYmUtSmFwYW4xLTEiLCJBZG9iZS1KYXBhbjEtMiIsIkFkb2JlLUphcGFuMS0zIiwiQWRvYmUtSmFwYW4xLTQiLCJBZG9iZS1KYXBhbjEtNSIsIkFkb2JlLUphcGFuMS02IiwiQWRvYmUtS29yZWExLTAiLCJBZG9iZS1Lb3JlYTEtMSIsIkFkb2JlLUtvcmVhMS0yIiwiQjUtSCIsIkI1LVYiLCJCNXBjLUgiLCJCNXBjLVYiLCJDTlMtRVVDLUgiLCJDTlMtRVVDLVYiLCJDTlMxLUgiLCJDTlMxLVYiLCJDTlMyLUgiLCJDTlMyLVYiLCJFVEhLLUI1LUgiLCJFVEhLLUI1LVYiLCJFVGVuLUI1LUgiLCJFVGVuLUI1LVYiLCJFVGVubXMtQjUtSCIsIkVUZW5tcy1CNS1WIiwiRVVDLUgiLCJFVUMtViIsIkV4dC1IIiwiRXh0LVJLU0otSCIsIkV4dC1SS1NKLVYiLCJFeHQtViIsIkdCLUVVQy1IIiwiR0ItRVVDLVYiLCJHQi1IIiwiR0ItViIsIkdCSy1FVUMtSCIsIkdCSy1FVUMtViIsIkdCSzJLLUgiLCJHQksySy1WIiwiR0JLcC1FVUMtSCIsIkdCS3AtRVVDLVYiLCJHQlQtRVVDLUgiLCJHQlQtRVVDLVYiLCJHQlQtSCIsIkdCVC1WIiwiR0JUcGMtRVVDLUgiLCJHQlRwYy1FVUMtViIsIkdCcGMtRVVDLUgiLCJHQnBjLUVVQy1WIiwiSCIsIkhLZGxhLUI1LUgiLCJIS2RsYS1CNS1WIiwiSEtkbGItQjUtSCIsIkhLZGxiLUI1LVYiLCJIS2djY3MtQjUtSCIsIkhLZ2Njcy1CNS1WIiwiSEttMzE0LUI1LUgiLCJIS20zMTQtQjUtViIsIkhLbTQ3MS1CNS1IIiwiSEttNDcxLUI1LVYiLCJIS3Njcy1CNS1IIiwiSEtzY3MtQjUtViIsIkhhbmtha3UiLCJIaXJhZ2FuYSIsIktTQy1FVUMtSCIsIktTQy1FVUMtViIsIktTQy1IIiwiS1NDLUpvaGFiLUgiLCJLU0MtSm9oYWItViIsIktTQy1WIiwiS1NDbXMtVUhDLUgiLCJLU0Ntcy1VSEMtSFctSCIsIktTQ21zLVVIQy1IVy1WIiwiS1NDbXMtVUhDLVYiLCJLU0NwYy1FVUMtSCIsIktTQ3BjLUVVQy1WIiwiS2F0YWthbmEiLCJOV1AtSCIsIk5XUC1WIiwiUktTSi1IIiwiUktTSi1WIiwiUm9tYW4iLCJVbmlDTlMtVUNTMi1IIiwiVW5pQ05TLVVDUzItViIsIlVuaUNOUy1VVEYxNi1IIiwiVW5pQ05TLVVURjE2LVYiLCJVbmlDTlMtVVRGMzItSCIsIlVuaUNOUy1VVEYzMi1WIiwiVW5pQ05TLVVURjgtSCIsIlVuaUNOUy1VVEY4LVYiLCJVbmlHQi1VQ1MyLUgiLCJVbmlHQi1VQ1MyLVYiLCJVbmlHQi1VVEYxNi1IIiwiVW5pR0ItVVRGMTYtViIsIlVuaUdCLVVURjMyLUgiLCJVbmlHQi1VVEYzMi1WIiwiVW5pR0ItVVRGOC1IIiwiVW5pR0ItVVRGOC1WIiwiVW5pSklTLVVDUzItSCIsIlVuaUpJUy1VQ1MyLUhXLUgiLCJVbmlKSVMtVUNTMi1IVy1WIiwiVW5pSklTLVVDUzItViIsIlVuaUpJUy1VVEYxNi1IIiwiVW5pSklTLVVURjE2LVYiLCJVbmlKSVMtVVRGMzItSCIsIlVuaUpJUy1VVEYzMi1WIiwiVW5pSklTLVVURjgtSCIsIlVuaUpJUy1VVEY4LVYiLCJVbmlKSVMyMDA0LVVURjE2LUgiLCJVbmlKSVMyMDA0LVVURjE2LVYiLCJVbmlKSVMyMDA0LVVURjMyLUgiLCJVbmlKSVMyMDA0LVVURjMyLVYiLCJVbmlKSVMyMDA0LVVURjgtSCIsIlVuaUpJUzIwMDQtVVRGOC1WIiwiVW5pSklTUHJvLVVDUzItSFctViIsIlVuaUpJU1Byby1VQ1MyLVYiLCJVbmlKSVNQcm8tVVRGOC1WIiwiVW5pSklTWDAyMTMtVVRGMzItSCIsIlVuaUpJU1gwMjEzLVVURjMyLVYiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1WIiwiVW5pS1MtVUNTMi1IIiwiVW5pS1MtVUNTMi1WIiwiVW5pS1MtVVRGMTYtSCIsIlVuaUtTLVVURjE2LVYiLCJVbmlLUy1VVEYzMi1IIiwiVW5pS1MtVVRGMzItViIsIlVuaUtTLVVURjgtSCIsIlVuaUtTLVVURjgtViIsIlYiLCJXUC1TeW1ib2wiXSxCaT0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGkpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGkpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGkpe2lmKHQtZT5CaSl0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109aSsrfW1hcEJmUmFuZ2UoZSx0LGkpe2lmKHQtZT5CaSl0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aC0xO2Zvcig7ZTw9dDspe3RoaXMuX21hcFtlKytdPWk7Y29uc3QgdD1pLmNoYXJDb2RlQXQoYSkrMTt0PjI1NT9pPWkuc3Vic3RyaW5nKDAsYS0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKGkuY2hhckNvZGVBdChhLTEpKzEpKyJcMCI6aT1pLnN1YnN0cmluZygwLGEpK1N0cmluZy5mcm9tQ2hhckNvZGUodCl9fW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXtpZih0LWU+QmkpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBhPWkubGVuZ3RoO2xldCByPTA7Zm9yKDtlPD10JiZyPGE7KXt0aGlzLl9tYXBbZV09aVtyKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGk9dC5sZW5ndGg7aWYoaTw9NjU1MzYpZm9yKGxldCBhPTA7YTxpO2ErKyl2b2lkIDAhPT10W2FdJiZlKGEsdFthXSk7ZWxzZSBmb3IoY29uc3QgaSBpbiB0KWUoaSx0W2ldKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBpIGluIHQpaWYodFtpXT09PWUpcmV0dXJuIDB8aTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsaSl7bGV0IGE9MDtjb25zdCByPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgcz0wLG49ci5sZW5ndGg7czxuO3MrKyl7YT0oYTw8OHxlLmNoYXJDb2RlQXQodCtzKSk+Pj4wO2NvbnN0IG49cltzXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDspe2NvbnN0IHQ9bltlKytdLHI9bltlKytdO2lmKGE+PXQmJmE8PXIpe2kuY2hhcmNvZGU9YTtpLmxlbmd0aD1zKzE7cmV0dXJufX19aS5jaGFyY29kZT0wO2kubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9dFtpXTtmb3IobGV0IHQ9MCxyPWEubGVuZ3RoO3Q8cjspe2NvbnN0IHI9YVt0KytdLHM9YVt0KytdO2lmKGU+PXImJmU8PXMpcmV0dXJuIGkrMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX1mdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoaSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIGV4cGVjdEludChlKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gcGFyc2VCZkNoYXIoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PXl0KWJyZWFrO2lmKGlzQ21kKGksImVuZGJmY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IHI9aTtlLm1hcE9uZShhLHIpfX1mdW5jdGlvbiBwYXJzZUJmUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PXl0KWJyZWFrO2lmKGlzQ21kKGksImVuZGJmcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpfHwic3RyaW5nIj09dHlwZW9mIGkpe2NvbnN0IHQ9TnVtYmVyLmlzSW50ZWdlcihpKT9TdHJpbmcuZnJvbUNoYXJDb2RlKGkpOmk7ZS5tYXBCZlJhbmdlKGEscix0KX1lbHNle2lmKCFpc0NtZChpLCJbIikpYnJlYWs7e2k9dC5nZXRPYmooKTtjb25zdCBzPVtdO2Zvcig7IWlzQ21kKGksIl0iKSYmaSE9PXl0Oyl7cy5wdXNoKGkpO2k9dC5nZXRPYmooKX1lLm1hcEJmUmFuZ2VUb0FycmF5KGEscixzKX19fXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PXl0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdEludChpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09eXQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcz1pO2UubWFwQ2lkUmFuZ2UoYSxyLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT15dClicmVhaztpZihpc0NtZChpLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGkpYnJlYWs7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IHI9c3RyVG9JbnQoaSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShpLmxlbmd0aCxhLHIpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjb2Rlc3BhY2UgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VXTW9kZShlLHQpe2NvbnN0IGk9dC5nZXRPYmooKTtOdW1iZXIuaXNJbnRlZ2VyKGkpJiYoZS52ZXJ0aWNhbD0hIWkpfWZ1bmN0aW9uIHBhcnNlQ01hcE5hbWUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7aSBpbnN0YW5jZW9mIE5hbWUmJihlLm5hbWU9aS5uYW1lKX1hc3luYyBmdW5jdGlvbiBwYXJzZUNNYXAoZSx0LGksYSl7bGV0IHIscztBOmZvcig7Oyl0cnl7Y29uc3QgaT10LmdldE9iaigpO2lmKGk9PT15dClicmVhaztpZihpIGluc3RhbmNlb2YgTmFtZSl7IldNb2RlIj09PWkubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWkubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3I9aX1lbHNlIGlmKGkgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKGkuY21kKXtjYXNlImVuZGNtYXAiOmJyZWFrIEE7Y2FzZSJ1c2VjbWFwIjpyIGluc3RhbmNlb2YgTmFtZSYmKHM9ci5uYW1lKTticmVhaztjYXNlImJlZ2luY29kZXNwYWNlcmFuZ2UiOnBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luYmZjaGFyIjpwYXJzZUJmQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjpwYXJzZUNpZENoYXIoZSx0KTticmVhaztjYXNlImJlZ2luYmZyYW5nZSI6cGFyc2VCZlJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZHJhbmdlIjpwYXJzZUNpZFJhbmdlKGUsdCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFhJiZzJiYoYT1zKTtyZXR1cm4gYT9leHRlbmRDTWFwKGUsaSxhKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGkpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChpLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKWUuY29kZXNwYWNlUmFuZ2VzW2ldPXRbaV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWxpLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTppLGNvbXByZXNzaW9uVHlwZTphfT1hd2FpdCB0KGUpLHI9bmV3IENNYXAoITApO2lmKGE9PT13QS5CSU5BUlkpcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGksciwoZT0+ZXh0ZW5kQ01hcChyLHQsZSkpKTtpZihhPT09d0EuTk9ORSl7Y29uc3QgZT1uZXcgTGV4ZXIobmV3IFN0cmVhbShpKSk7cmV0dXJuIHBhcnNlQ01hcChyLGUsdCxudWxsKX10aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgQ01hcCAiY29tcHJlc3Npb25UeXBlIiB2YWx1ZTogJHthfWApfWNsYXNzIENNYXBGYWN0b3J5e3N0YXRpYyBhc3luYyBjcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0LHVzZUNNYXA6aX0pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXJldHVybiBjcmVhdGVCdWlsdEluQ01hcChlLm5hbWUsdCk7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGE9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBMZXhlcihlKSx0LGkpO3JldHVybiBhLmlzSWRlbnRpdHlDTWFwP2NyZWF0ZUJ1aWx0SW5DTWFwKGEubmFtZSx0KTphfXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fV9fd2VicGFja19yZXF1aXJlX18oMTc5NSk7Y29uc3QgUWk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iXSxFaT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSx1aT1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXSxkaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLGZpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiY2VudG9sZHN0eWxlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsIiIsInRocmVlcXVhcnRlcnNlbWRhc2giLCIiLCJxdWVzdGlvbnNtYWxsIiwiIiwiIiwiIiwiIiwiRXRoc21hbGwiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiIiwiIiwiIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5pbmZlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsImFzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIkFhY3V0ZXNtYWxsIiwiQWdyYXZlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBdGlsZGVzbWFsbCIsIkFyaW5nc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWdyYXZlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPdGlsZGVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWdyYXZlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCIiLCJlaWdodHN1cGVyaW9yIiwiZm91cmluZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJTY2Fyb25zbWFsbCIsIiIsImNlbnRpbmZlcmlvciIsInR3b2luZmVyaW9yIiwiIiwiRGllcmVzaXNzbWFsbCIsIiIsIkNhcm9uc21hbGwiLCJvc3VwZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCIiLCJjb21tYWluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJZYWN1dGVzbWFsbCIsIiIsImRvbGxhcmluZmVyaW9yIiwiIiwiIiwiVGhvcm5zbWFsbCIsIiIsIm5pbmVpbmZlcmlvciIsInplcm9pbmZlcmlvciIsIlpjYXJvbnNtYWxsIiwiQUVzbWFsbCIsIk9zbGFzaHNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVpbmZlcmlvciIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiT0VzbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5zdXBlcmlvciIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsIiIsIllkaWVyZXNpc3NtYWxsIiwiIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvc3VwZXJpb3IiLCIiLCJlc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCIiLCJpc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJkc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCIiLCJsc3VwZXJpb3IiLCJPZ29uZWtzbWFsbCIsIkJyZXZlc21hbGwiLCJNYWNyb25zbWFsbCIsImJzdXBlcmlvciIsIm5zdXBlcmlvciIsIm1zdXBlcmlvciIsImNvbW1hc3VwZXJpb3IiLCJwZXJpb2RzdXBlcmlvciIsIkRvdGFjY2VudHNtYWxsIiwiUmluZ3NtYWxsIiwiIiwiIiwiIiwiIl0scGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXSxtaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCIiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCIiLCJxdWVzdGlvbmRvd24iLCIiLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsIiIsInJpbmciLCJjZWRpbGxhIiwiIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJBRSIsIiIsIm9yZGZlbWluaW5lIiwiIiwiIiwiIiwiIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCIiLCIiLCIiLCIiLCIiLCJhZSIsIiIsIiIsIiIsImRvdGxlc3NpIiwiIiwiIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwiIiwiIiwiIiwiIl0seWk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGxhIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdLHdpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJ1bml2ZXJzYWwiLCJudW1iZXJzaWduIiwiZXhpc3RlbnRpYWwiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwic3VjaHRoYXQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2ttYXRoIiwicGx1cyIsImNvbW1hIiwibWludXMiLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImNvbmdydWVudCIsIkFscGhhIiwiQmV0YSIsIkNoaSIsIkRlbHRhIiwiRXBzaWxvbiIsIlBoaSIsIkdhbW1hIiwiRXRhIiwiSW90YSIsInRoZXRhMSIsIkthcHBhIiwiTGFtYmRhIiwiTXUiLCJOdSIsIk9taWNyb24iLCJQaSIsIlRoZXRhIiwiUmhvIiwiU2lnbWEiLCJUYXUiLCJVcHNpbG9uIiwic2lnbWExIiwiT21lZ2EiLCJYaSIsIlBzaSIsIlpldGEiLCJicmFja2V0bGVmdCIsInRoZXJlZm9yZSIsImJyYWNrZXRyaWdodCIsInBlcnBlbmRpY3VsYXIiLCJ1bmRlcnNjb3JlIiwicmFkaWNhbGV4IiwiYWxwaGEiLCJiZXRhIiwiY2hpIiwiZGVsdGEiLCJlcHNpbG9uIiwicGhpIiwiZ2FtbWEiLCJldGEiLCJpb3RhIiwicGhpMSIsImthcHBhIiwibGFtYmRhIiwibXUiLCJudSIsIm9taWNyb24iLCJwaSIsInRoZXRhIiwicmhvIiwic2lnbWEiLCJ0YXUiLCJ1cHNpbG9uIiwib21lZ2ExIiwib21lZ2EiLCJ4aSIsInBzaSIsInpldGEiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0Iiwic2ltaWxhciIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkV1cm8iLCJVcHNpbG9uMSIsIm1pbnV0ZSIsImxlc3NlcXVhbCIsImZyYWN0aW9uIiwiaW5maW5pdHkiLCJmbG9yaW4iLCJjbHViIiwiZGlhbW9uZCIsImhlYXJ0Iiwic3BhZGUiLCJhcnJvd2JvdGgiLCJhcnJvd2xlZnQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsImFycm93ZG93biIsImRlZ3JlZSIsInBsdXNtaW51cyIsInNlY29uZCIsImdyZWF0ZXJlcXVhbCIsIm11bHRpcGx5IiwicHJvcG9ydGlvbmFsIiwicGFydGlhbGRpZmYiLCJidWxsZXQiLCJkaXZpZGUiLCJub3RlcXVhbCIsImVxdWl2YWxlbmNlIiwiYXBwcm94ZXF1YWwiLCJlbGxpcHNpcyIsImFycm93dmVydGV4IiwiYXJyb3dob3JpemV4IiwiY2FycmlhZ2VyZXR1cm4iLCJhbGVwaCIsIklmcmFrdHVyIiwiUmZyYWt0dXIiLCJ3ZWllcnN0cmFzcyIsImNpcmNsZW11bHRpcGx5IiwiY2lyY2xlcGx1cyIsImVtcHR5c2V0IiwiaW50ZXJzZWN0aW9uIiwidW5pb24iLCJwcm9wZXJzdXBlcnNldCIsInJlZmxleHN1cGVyc2V0Iiwibm90c3Vic2V0IiwicHJvcGVyc3Vic2V0IiwicmVmbGV4c3Vic2V0IiwiZWxlbWVudCIsIm5vdGVsZW1lbnQiLCJhbmdsZSIsImdyYWRpZW50IiwicmVnaXN0ZXJzZXJpZiIsImNvcHlyaWdodHNlcmlmIiwidHJhZGVtYXJrc2VyaWYiLCJwcm9kdWN0IiwicmFkaWNhbCIsImRvdG1hdGgiLCJsb2dpY2Fsbm90IiwibG9naWNhbGFuZCIsImxvZ2ljYWxvciIsImFycm93ZGJsYm90aCIsImFycm93ZGJsbGVmdCIsImFycm93ZGJsdXAiLCJhcnJvd2RibHJpZ2h0IiwiYXJyb3dkYmxkb3duIiwibG96ZW5nZSIsImFuZ2xlbGVmdCIsInJlZ2lzdGVyc2FucyIsImNvcHlyaWdodHNhbnMiLCJ0cmFkZW1hcmtzYW5zIiwic3VtbWF0aW9uIiwicGFyZW5sZWZ0dHAiLCJwYXJlbmxlZnRleCIsInBhcmVubGVmdGJ0IiwiYnJhY2tldGxlZnR0cCIsImJyYWNrZXRsZWZ0ZXgiLCJicmFja2V0bGVmdGJ0IiwiYnJhY2VsZWZ0dHAiLCJicmFjZWxlZnRtaWQiLCJicmFjZWxlZnRidCIsImJyYWNlZXgiLCIiLCJhbmdsZXJpZ2h0IiwiaW50ZWdyYWwiLCJpbnRlZ3JhbHRwIiwiaW50ZWdyYWxleCIsImludGVncmFsYnQiLCJwYXJlbnJpZ2h0dHAiLCJwYXJlbnJpZ2h0ZXgiLCJwYXJlbnJpZ2h0YnQiLCJicmFja2V0cmlnaHR0cCIsImJyYWNrZXRyaWdodGV4IiwiYnJhY2tldHJpZ2h0YnQiLCJicmFjZXJpZ2h0dHAiLCJicmFjZXJpZ2h0bWlkIiwiYnJhY2VyaWdodGJ0IiwiIl0sYmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImExIiwiYTIiLCJhMjAyIiwiYTMiLCJhNCIsImE1IiwiYTExOSIsImExMTgiLCJhMTE3IiwiYTExIiwiYTEyIiwiYTEzIiwiYTE0IiwiYTE1IiwiYTE2IiwiYTEwNSIsImExNyIsImExOCIsImExOSIsImEyMCIsImEyMSIsImEyMiIsImEyMyIsImEyNCIsImEyNSIsImEyNiIsImEyNyIsImEyOCIsImE2IiwiYTciLCJhOCIsImE5IiwiYTEwIiwiYTI5IiwiYTMwIiwiYTMxIiwiYTMyIiwiYTMzIiwiYTM0IiwiYTM1IiwiYTM2IiwiYTM3IiwiYTM4IiwiYTM5IiwiYTQwIiwiYTQxIiwiYTQyIiwiYTQzIiwiYTQ0IiwiYTQ1IiwiYTQ2IiwiYTQ3IiwiYTQ4IiwiYTQ5IiwiYTUwIiwiYTUxIiwiYTUyIiwiYTUzIiwiYTU0IiwiYTU1IiwiYTU2IiwiYTU3IiwiYTU4IiwiYTU5IiwiYTYwIiwiYTYxIiwiYTYyIiwiYTYzIiwiYTY0IiwiYTY1IiwiYTY2IiwiYTY3IiwiYTY4IiwiYTY5IiwiYTcwIiwiYTcxIiwiYTcyIiwiYTczIiwiYTc0IiwiYTIwMyIsImE3NSIsImEyMDQiLCJhNzYiLCJhNzciLCJhNzgiLCJhNzkiLCJhODEiLCJhODIiLCJhODMiLCJhODQiLCJhOTciLCJhOTgiLCJhOTkiLCJhMTAwIiwiIiwiYTg5IiwiYTkwIiwiYTkzIiwiYTk0IiwiYTkxIiwiYTkyIiwiYTIwNSIsImE4NSIsImEyMDYiLCJhODYiLCJhODciLCJhODgiLCJhOTUiLCJhOTYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJhMTAxIiwiYTEwMiIsImExMDMiLCJhMTA0IiwiYTEwNiIsImExMDciLCJhMTA4IiwiYTExMiIsImExMTEiLCJhMTEwIiwiYTEwOSIsImExMjAiLCJhMTIxIiwiYTEyMiIsImExMjMiLCJhMTI0IiwiYTEyNSIsImExMjYiLCJhMTI3IiwiYTEyOCIsImExMjkiLCJhMTMwIiwiYTEzMSIsImExMzIiLCJhMTMzIiwiYTEzNCIsImExMzUiLCJhMTM2IiwiYTEzNyIsImExMzgiLCJhMTM5IiwiYTE0MCIsImExNDEiLCJhMTQyIiwiYTE0MyIsImExNDQiLCJhMTQ1IiwiYTE0NiIsImExNDciLCJhMTQ4IiwiYTE0OSIsImExNTAiLCJhMTUxIiwiYTE1MiIsImExNTMiLCJhMTU0IiwiYTE1NSIsImExNTYiLCJhMTU3IiwiYTE1OCIsImExNTkiLCJhMTYwIiwiYTE2MSIsImExNjMiLCJhMTY0IiwiYTE5NiIsImExNjUiLCJhMTkyIiwiYTE2NiIsImExNjciLCJhMTY4IiwiYTE2OSIsImExNzAiLCJhMTcxIiwiYTE3MiIsImExNzMiLCJhMTYyIiwiYTE3NCIsImExNzUiLCJhMTc2IiwiYTE3NyIsImExNzgiLCJhMTc5IiwiYTE5MyIsImExODAiLCJhMTk5IiwiYTE4MSIsImEyMDAiLCJhMTgyIiwiIiwiYTIwMSIsImExODMiLCJhMTg0IiwiYTE5NyIsImExODUiLCJhMTk0IiwiYTE5OCIsImExODYiLCJhMTk1IiwiYTE4NyIsImExODgiLCJhMTg5IiwiYTE5MCIsImExOTEiLCIiXTtmdW5jdGlvbiBnZXRFbmNvZGluZyhlKXtzd2l0Y2goZSl7Y2FzZSJXaW5BbnNpRW5jb2RpbmciOnJldHVybiB5aTtjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBtaTtjYXNlIk1hY1JvbWFuRW5jb2RpbmciOnJldHVybiBwaTtjYXNlIlN5bWJvbFNldEVuY29kaW5nIjpyZXR1cm4gd2k7Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGJpO2Nhc2UiRXhwZXJ0RW5jb2RpbmciOnJldHVybiBkaTtjYXNlIk1hY0V4cGVydEVuY29kaW5nIjpyZXR1cm4gZmk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19Y29uc3QgRGk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl0sRmk9MzkxLFNpPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGtpPVtudWxsLG51bGwsbnVsbCx7aWQ6ImFuZCIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJvciIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJub3QiLG1pbjoxLHN0YWNrRGVsdGE6MH0sbnVsbCxudWxsLG51bGwse2lkOiJhYnMiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJhZGQiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0rZVt0LTFdfX0se2lkOiJzdWIiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0tZVt0LTFdfX0se2lkOiJkaXYiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0vZVt0LTFdfX0sbnVsbCx7aWQ6Im5lZyIsbWluOjEsc3RhY2tEZWx0YTowLHN0YWNrRm4oZSx0KXtlW3QtMV09LWVbdC0xXX19LHtpZDoiZXEiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LG51bGwsbnVsbCx7aWQ6ImRyb3AiLG1pbjoxLHN0YWNrRGVsdGE6LTF9LG51bGwse2lkOiJwdXQiLG1pbjoyLHN0YWNrRGVsdGE6LTJ9LHtpZDoiZ2V0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiaWZlbHNlIixtaW46NCxzdGFja0RlbHRhOi0zfSx7aWQ6InJhbmRvbSIsbWluOjAsc3RhY2tEZWx0YToxfSx7aWQ6Im11bCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXSplW3QtMV19fSxudWxsLHtpZDoic3FydCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImR1cCIsbWluOjEsc3RhY2tEZWx0YToxfSx7aWQ6ImV4Y2giLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJpbmRleCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6InJvbGwiLG1pbjozLHN0YWNrRGVsdGE6LTJ9LG51bGwsbnVsbCxudWxsLHtpZDoiaGZsZXgiLG1pbjo3LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleCIsbWluOjEzLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGZsZXgxIixtaW46OSxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgxIixtaW46MTEscmVzZXRTdGFjazohMH1dO2NsYXNzIENGRlBhcnNlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5ieXRlcz1lLmdldEJ5dGVzKCk7dGhpcy5wcm9wZXJ0aWVzPXQ7dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhaX1wYXJzZSgpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzLHQ9bmV3IENGRjt0aGlzLmNmZj10O2NvbnN0IGk9dGhpcy5wYXJzZUhlYWRlcigpLGE9dGhpcy5wYXJzZUluZGV4KGkuZW5kUG9zKSxyPXRoaXMucGFyc2VJbmRleChhLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoci5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHMuZW5kUG9zKSxvPXRoaXMucGFyc2VEaWN0KHIub2JqLmdldCgwKSksZz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCxvLHQuc3RyaW5ncyk7dC5oZWFkZXI9aS5vYmo7dC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KGEub2JqKTt0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KHMub2JqKTt0LnRvcERpY3Q9Zzt0Lmdsb2JhbFN1YnJJbmRleD1uLm9iajt0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KTt0LmlzQ0lERm9udD1nLmhhc05hbWUoIlJPUyIpO2NvbnN0IGM9Zy5nZXRCeU5hbWUoIkNoYXJTdHJpbmdzIiksQz10aGlzLnBhcnNlSW5kZXgoYykub2JqLGg9Zy5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtoJiYoZS5mb250TWF0cml4PWgpO2NvbnN0IGw9Zy5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYobCl7ZS5hc2NlbnQ9TWF0aC5tYXgobFszXSxsWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4obFsxXSxsWzNdKTtlLmFzY2VudFNjYWxlZD0hMH1sZXQgUSxFO2lmKHQuaXNDSURGb250KXtjb25zdCBlPXRoaXMucGFyc2VJbmRleChnLmdldEJ5TmFtZSgiRkRBcnJheSIpKS5vYmo7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSkscj10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCx0aGlzLnBhcnNlRGljdChhKSx0LnN0cmluZ3MpO3RoaXMucGFyc2VQcml2YXRlRGljdChyKTt0LmZkQXJyYXkucHVzaChyKX1FPW51bGw7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxDLmNvdW50LHQuc3RyaW5ncywhMCk7dC5mZFNlbGVjdD10aGlzLnBhcnNlRkRTZWxlY3QoZy5nZXRCeU5hbWUoIkZEU2VsZWN0IiksQy5jb3VudCl9ZWxzZXtRPXRoaXMucGFyc2VDaGFyc2V0cyhnLmdldEJ5TmFtZSgiY2hhcnNldCIpLEMuY291bnQsdC5zdHJpbmdzLCExKTtFPXRoaXMucGFyc2VFbmNvZGluZyhnLmdldEJ5TmFtZSgiRW5jb2RpbmciKSxlLHQuc3RyaW5ncyxRLmNoYXJzZXQpfXQuY2hhcnNldD1RO3QuZW5jb2Rpbmc9RTtjb25zdCB1PXRoaXMucGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6Qyxsb2NhbFN1YnJJbmRleDpnLnByaXZhdGVEaWN0LnN1YnJzSW5kZXgsZ2xvYmFsU3VickluZGV4Om4ub2JqLGZkU2VsZWN0OnQuZmRTZWxlY3QsZmRBcnJheTp0LmZkQXJyYXkscHJpdmF0ZURpY3Q6Zy5wcml2YXRlRGljdH0pO3QuY2hhclN0cmluZ3M9dS5jaGFyU3RyaW5nczt0LnNlYWNzPXUuc2VhY3M7dC53aWR0aHM9dS53aWR0aHM7cmV0dXJuIHR9cGFyc2VIZWFkZXIoKXtsZXQgZT10aGlzLmJ5dGVzO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IoO2k8dCYmMSE9PWVbaV07KSsraTtpZihpPj10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7aWYoMCE9PWkpe2luZm8oImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKTtlPWUuc3ViYXJyYXkoaSk7dGhpcy5ieXRlcz1lfWNvbnN0IGE9ZVswXSxyPWVbMV0scz1lWzJdLG49ZVszXTtyZXR1cm57b2JqOm5ldyBDRkZIZWFkZXIoYSxyLHMsbiksZW5kUG9zOnN9fXBhcnNlRGljdChlKXtsZXQgdD0wO2Z1bmN0aW9uIHBhcnNlT3BlcmFuZCgpe2xldCBpPWVbdCsrXTtpZigzMD09PWkpcmV0dXJuIGZ1bmN0aW9uIHBhcnNlRmxvYXRPcGVyYW5kKCl7bGV0IGk9IiI7Y29uc3QgYT0xNSxyPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIi4iLCJFIiwiRS0iLG51bGwsIi0iXSxzPWUubGVuZ3RoO2Zvcig7dDxzOyl7Y29uc3Qgcz1lW3QrK10sbj1zPj40LG89MTUmcztpZihuPT09YSlicmVhaztpKz1yW25dO2lmKG89PT1hKWJyZWFrO2krPXJbb119cmV0dXJuIHBhcnNlRmxvYXQoaSl9KCk7aWYoMjg9PT1pKXtpPWVbdCsrXTtpPShpPDwyNHxlW3QrK108PDE2KT4+MTY7cmV0dXJuIGl9aWYoMjk9PT1pKXtpPWVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107aT1pPDw4fGVbdCsrXTtyZXR1cm4gaX1pZihpPj0zMiYmaTw9MjQ2KXJldHVybiBpLTEzOTtpZihpPj0yNDcmJmk8PTI1MClyZXR1cm4gMjU2KihpLTI0NykrZVt0KytdKzEwODtpZihpPj0yNTEmJmk8PTI1NClyZXR1cm4tMjU2KihpLTI1MSktZVt0KytdLTEwODt3YXJuKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJytpKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKTtyZXR1cm4gTmFOfWxldCBpPVtdO2NvbnN0IGE9W107dD0wO2NvbnN0IHI9ZS5sZW5ndGg7Zm9yKDt0PHI7KXtsZXQgcj1lW3RdO2lmKHI8PTIxKXsxMj09PXImJihyPXI8PDh8ZVsrK3RdKTthLnB1c2goW3IsaV0pO2k9W107Kyt0fWVsc2UgaS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gYX1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LGk9dGhpcy5ieXRlcyxhPWlbZSsrXTw8OHxpW2UrK10scj1bXTtsZXQgcyxuLG89ZTtpZigwIT09YSl7Y29uc3QgdD1pW2UrK10sZz1lKyhhKzEpKnQtMTtmb3Iocz0wLG49YSsxO3M8bjsrK3Mpe2xldCBhPTA7Zm9yKGxldCByPTA7cjx0Oysrcil7YTw8PTg7YSs9aVtlKytdfXIucHVzaChnK2EpfW89clthXX1mb3Iocz0wLG49ci5sZW5ndGgtMTtzPG47KytzKXtjb25zdCBlPXJbc10sYT1yW3MrMV07dC5hZGQoaS5zdWJhcnJheShlLGEpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5wdXNoKGJ5dGVzVG9TdHJpbmcoYSkpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IGk9MCxhPWUuY291bnQ7aTxhOysraSl7Y29uc3QgYT1lLmdldChpKTt0LmFkZChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxpKXtjb25zdCBhPW5ldyBlKGkpO2Zvcihjb25zdFtlLGldb2YgdClhLnNldEJ5S2V5KGUsaSk7cmV0dXJuIGF9cGFyc2VDaGFyU3RyaW5nKGUsdCxpLGEpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtsZXQgcj1lLnN0YWNrU2l6ZTtjb25zdCBzPWUuc3RhY2s7bGV0IG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuOyl7Y29uc3QgZz10W28rK107bGV0IGM9bnVsbDtpZigxMj09PWcpe2NvbnN0IGU9dFtvKytdO2lmKDA9PT1lKXt0W28tMl09MTM5O3Rbby0xXT0yMjtyPTB9ZWxzZSBjPWtpW2VdfWVsc2UgaWYoMjg9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2KT4+MTY7bys9MjtyKyt9ZWxzZSBpZigxND09PWcpe2lmKHI+PTQpe3ItPTQ7aWYodGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKXtlLnNlYWM9cy5zbGljZShyLHIrNCk7cmV0dXJuITF9fWM9U2lbZ119ZWxzZSBpZihnPj0zMiYmZzw9MjQ2KXtzW3JdPWctMTM5O3IrK31lbHNlIGlmKGc+PTI0NyYmZzw9MjU0KXtzW3JdPWc8MjUxPyhnLTI0Nzw8OCkrdFtvXSsxMDg6LShnLTI1MTw8OCktdFtvXS0xMDg7bysrO3IrK31lbHNlIGlmKDI1NT09PWcpe3Nbcl09KHRbb108PDI0fHRbbysxXTw8MTZ8dFtvKzJdPDw4fHRbbyszXSkvNjU1MzY7bys9NDtyKyt9ZWxzZSBpZigxOT09PWd8fDIwPT09Zyl7ZS5oaW50cys9cj4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO24tPTE7Y29udGludWV9bys9ZS5oaW50cys3Pj4zO3IlPTI7Yz1TaVtnXX1lbHNle2lmKDEwPT09Z3x8Mjk9PT1nKXtjb25zdCB0PTEwPT09Zz9pOmE7aWYoIXQpe2M9U2lbZ107d2FybigiTWlzc2luZyBzdWJyc0luZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWxldCBuPTMyNzY4O3QuY291bnQ8MTI0MD9uPTEwNzp0LmNvdW50PDMzOTAwJiYobj0xMTMxKTtjb25zdCBvPXNbLS1yXStuO2lmKG88MHx8bz49dC5jb3VudHx8aXNOYU4obykpe2M9U2lbZ107d2FybigiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9cjtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KG8pLGksYSkpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtyPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09Zyl7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1pZigwPT09ZyYmbz09PXQubGVuZ3RoKXt0W28tMV09MTQ7Yz1TaVsxNF19ZWxzZXtpZig5PT09Zyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO24tPTE7Y29udGludWV9Yz1TaVtnXX19aWYoYyl7aWYoYy5zdGVtKXtlLmhpbnRzKz1yPj4xO2lmKDM9PT1nfHwyMz09PWcpZS5oYXNWU3RlbXM9ITA7ZWxzZSBpZihlLmhhc1ZTdGVtcyYmKDE9PT1nfHwxOD09PWcpKXt3YXJuKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKTt0W28tMV09MT09PWc/MzoyM319aWYoIm1pbiJpbiBjJiYhZS51bmRlZlN0YWNrJiZyPGMubWluKXt3YXJuKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrYy5pZCsiOyBhY3R1YWw6ICIrcisiLCBleHBlY3RlZDogIitjLm1pbik7aWYoMD09PXIpe3Rbby0xXT0xNDtyZXR1cm4hMH1yZXR1cm4hMX1pZihlLmZpcnN0U3RhY2tDbGVhcmluZyYmYy5zdGFja0NsZWFyaW5nKXtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMTtyLT1jLm1pbjtyPj0yJiZjLnN0ZW0/ciU9MjpyPjEmJndhcm4oIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKTtyPjAmJihlLndpZHRoPXNbci0xXSl9aWYoInN0YWNrRGVsdGEiaW4gYyl7InN0YWNrRm4iaW4gYyYmYy5zdGFja0ZuKHMscik7cis9Yy5zdGFja0RlbHRhfWVsc2UgaWYoYy5zdGFja0NsZWFyaW5nKXI9MDtlbHNlIGlmKGMucmVzZXRTdGFjayl7cj0wO2UudW5kZWZTdGFjaz0hMX1lbHNlIGlmKGMudW5kZWZTdGFjayl7cj0wO2UudW5kZWZTdGFjaz0hMDtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMX19fW48dC5sZW5ndGgmJnQuZmlsbCgxNCxuKTtlLnN0YWNrU2l6ZT1yO3JldHVybiEwfXBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmUsbG9jYWxTdWJySW5kZXg6dCxnbG9iYWxTdWJySW5kZXg6aSxmZFNlbGVjdDphLGZkQXJyYXk6cixwcml2YXRlRGljdDpzfSl7Y29uc3Qgbj1bXSxvPVtdLGc9ZS5jb3VudDtmb3IobGV0IGM9MDtjPGc7YysrKXtjb25zdCBnPWUuZ2V0KGMpLEM9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLHVuZGVmU3RhY2s6ITAsaGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgaD0hMCxsPW51bGwsUT1zO2lmKGEmJnIubGVuZ3RoKXtjb25zdCBlPWEuZ2V0RkRJbmRleChjKTtpZigtMT09PWUpe3dhcm4oIkdseXBoIGluZGV4IGlzIG5vdCBpbiBmZCBzZWxlY3QuIik7aD0hMX1pZihlPj1yLmxlbmd0aCl7d2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIik7aD0hMX1pZihoKXtRPXJbZV0ucHJpdmF0ZURpY3Q7bD1RLnN1YnJzSW5kZXh9fWVsc2UgdCYmKGw9dCk7aCYmKGg9dGhpcy5wYXJzZUNoYXJTdHJpbmcoQyxnLGwsaSkpO2lmKG51bGwhPT1DLndpZHRoKXtjb25zdCBlPVEuZ2V0QnlOYW1lKCJub21pbmFsV2lkdGhYIik7b1tjXT1lK0Mud2lkdGh9ZWxzZXtjb25zdCBlPVEuZ2V0QnlOYW1lKCJkZWZhdWx0V2lkdGhYIik7b1tjXT1lfW51bGwhPT1DLnNlYWMmJihuW2NdPUMuc2VhYyk7aHx8ZS5zZXQoYyxuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6bix3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgaT10WzBdLGE9dFsxXTtpZigwPT09aXx8YT49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3Qgcj1hK2kscz10aGlzLmJ5dGVzLnN1YmFycmF5KGEsciksbj10aGlzLnBhcnNlRGljdChzKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxuLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vOzA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBnPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGM9YStnO2lmKDA9PT1nfHxjPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBDPXRoaXMucGFyc2VJbmRleChjKTtvLnN1YnJzSW5kZXg9Qy5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsaSxhKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsR2kuSVNPX0FET0JFLFFpKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsR2kuRVhQRVJULEVpKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsR2kuRVhQRVJUX1NVQlNFVCx1aSk7Y29uc3Qgcj10aGlzLmJ5dGVzLHM9ZSxuPXJbZSsrXSxvPVthPzA6Ii5ub3RkZWYiXTtsZXQgZyxjLEM7dC09MTtzd2l0Y2gobil7Y2FzZSAwOmZvcihDPTA7Qzx0O0MrKyl7Zz1yW2UrK108PDh8cltlKytdO28ucHVzaChhP2c6aS5nZXQoZykpfWJyZWFrO2Nhc2UgMTpmb3IoO28ubGVuZ3RoPD10Oyl7Zz1yW2UrK108PDh8cltlKytdO2M9cltlKytdO2ZvcihDPTA7Qzw9YztDKyspby5wdXNoKGE/ZysrOmkuZ2V0KGcrKykpfWJyZWFrO2Nhc2UgMjpmb3IoO28ubGVuZ3RoPD10Oyl7Zz1yW2UrK108PDh8cltlKytdO2M9cltlKytdPDw4fHJbZSsrXTtmb3IoQz0wO0M8PWM7QysrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGg9ZSxsPXIuc3ViYXJyYXkocyxoKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsbixvLGwpfXBhcnNlRW5jb2RpbmcoZSx0LGksYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLHM9dGhpcy5ieXRlcztsZXQgbixvLGcsYz0hMSxDPW51bGw7aWYoMD09PWV8fDE9PT1lKXtjPSEwO249ZTtjb25zdCB0PWU/ZGk6bWk7Zm9yKG89MCxnPWEubGVuZ3RoO288ZztvKyspe2NvbnN0IGU9dC5pbmRleE9mKGFbb10pOy0xIT09ZSYmKHJbZV09byl9fWVsc2V7Y29uc3QgdD1lO249c1tlKytdO3N3aXRjaCgxMjcmbil7Y2FzZSAwOmNvbnN0IHQ9c1tlKytdO2ZvcihvPTE7bzw9dDtvKyspcltzW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IGk9c1tlKytdO2xldCBhPTE7Zm9yKG89MDtvPGk7bysrKXtjb25zdCB0PXNbZSsrXSxpPXNbZSsrXTtmb3IobGV0IGU9dDtlPD10K2k7ZSsrKXJbZV09YSsrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtufSBpbiBDRkZgKX1jb25zdCBnPWU7aWYoMTI4Jm4pe3NbdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PXNbZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9c1tlKytdLG49KHNbZSsrXTw8OCkrKDI1NSZzW2UrK10pO3JbdF09YS5pbmRleE9mKGkuZ2V0KG4pKX19KCl9Qz1zLnN1YmFycmF5KHQsZyl9biY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcoYyxuLHIsQyl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IGk9dGhpcy5ieXRlcyxhPWlbZSsrXSxyPVtdO2xldCBzO3N3aXRjaChhKXtjYXNlIDA6Zm9yKHM9MDtzPHQ7KytzKXtjb25zdCB0PWlbZSsrXTtyLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IG49aVtlKytdPDw4fGlbZSsrXTtmb3Iocz0wO3M8bjsrK3Mpe2xldCB0PWlbZSsrXTw8OHxpW2UrK107aWYoMD09PXMmJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IGE9aVtlKytdLG49aVtlXTw8OHxpW2UrMV07Zm9yKGxldCBlPXQ7ZTxuOysrZSlyLnB1c2goYSl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7YX0iLmApfWlmKHIubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QoYSxyKX19Y2xhc3MgQ0ZGe2NvbnN0cnVjdG9yKCl7dGhpcy5oZWFkZXI9bnVsbDt0aGlzLm5hbWVzPVtdO3RoaXMudG9wRGljdD1udWxsO3RoaXMuc3RyaW5ncz1uZXcgQ0ZGU3RyaW5nczt0aGlzLmdsb2JhbFN1YnJJbmRleD1udWxsO3RoaXMuZW5jb2Rpbmc9bnVsbDt0aGlzLmNoYXJzZXQ9bnVsbDt0aGlzLmNoYXJTdHJpbmdzPW51bGw7dGhpcy5mZEFycmF5PVtdO3RoaXMuZmRTZWxlY3Q9bnVsbDt0aGlzLmlzQ0lERm9udD0hMX1kdXBsaWNhdGVGaXJzdEdseXBoKCl7aWYodGhpcy5jaGFyU3RyaW5ncy5jb3VudD49NjU1MzUpe3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gY2hhcnN0cmluZ3MgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpO3JldHVybn1jb25zdCBlPXRoaXMuY2hhclN0cmluZ3MuZ2V0KDApO3RoaXMuY2hhclN0cmluZ3MuYWRkKGUpO3RoaXMuaXNDSURGb250JiZ0aGlzLmZkU2VsZWN0LmZkU2VsZWN0LnB1c2godGhpcy5mZFNlbGVjdC5mZFNlbGVjdFswXSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMuY2hhclN0cmluZ3MuY291bnQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY2hhclN0cmluZ3MuZ2V0KGUpLmxlbmd0aD4wfX1jbGFzcyBDRkZIZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5tYWpvcj1lO3RoaXMubWlub3I9dDt0aGlzLmhkclNpemU9aTt0aGlzLm9mZlNpemU9YX19Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9EaVtlXTplLUZpPD10aGlzLnN0cmluZ3MubGVuZ3RoP3RoaXMuc3RyaW5nc1tlLUZpXTpEaVswXX1nZXRTSUQoZSl7bGV0IHQ9RGkuaW5kZXhPZihlKTtpZigtMSE9PXQpcmV0dXJuIHQ7dD10aGlzLnN0cmluZ3MuaW5kZXhPZihlKTtyZXR1cm4tMSE9PXQ/dCtGaTotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fWNsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19Y2xhc3MgQ0ZGRGljdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMua2V5VG9OYW1lTWFwPWUua2V5VG9OYW1lTWFwO3RoaXMubmFtZVRvS2V5TWFwPWUubmFtZVRvS2V5TWFwO3RoaXMuZGVmYXVsdHM9ZS5kZWZhdWx0czt0aGlzLnR5cGVzPWUudHlwZXM7dGhpcy5vcGNvZGVzPWUub3Bjb2Rlczt0aGlzLm9yZGVyPWUub3JkZXI7dGhpcy5zdHJpbmdzPXQ7dGhpcy52YWx1ZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zZXRCeUtleShlLHQpe2lmKCEoZSBpbiB0aGlzLmtleVRvTmFtZU1hcCkpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdCBpIG9mIHQpaWYoaXNOYU4oaSkpe3dhcm4oYEludmFsaWQgQ0ZGRGljdCB2YWx1ZTogIiR7dH0iIGZvciBrZXkgIiR7ZX0iLmApO3JldHVybiEwfWNvbnN0IGk9dGhpcy50eXBlc1tlXTsibnVtIiE9PWkmJiJzaWQiIT09aSYmIm9mZnNldCIhPT1pfHwodD10WzBdKTt0aGlzLnZhbHVlc1tlXT10O3JldHVybiEwfXNldEJ5TmFtZShlLHQpe2lmKCEoZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiJHtlfSJgKTt0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV09dH1oYXNOYW1lKGUpe3JldHVybiB0aGlzLm5hbWVUb0tleU1hcFtlXWluIHRoaXMudmFsdWVzfWdldEJ5TmFtZShlKXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShpWzBdKT8oaVswXVswXTw8OCkraVswXVsxXTppWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWlbMV07dC5uYW1lVG9LZXlNYXBbaVsxXV09ZTt0LnR5cGVzW2VdPWlbMl07dC5kZWZhdWx0c1tlXT1pWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGlbMF0pP2lbMF06W2lbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgUmk9W1tbMTIsMzBdLCJST1MiLFsic2lkIiwic2lkIiwibnVtIl0sbnVsbF0sW1sxMiwyMF0sIlN5bnRoZXRpY0Jhc2UiLCJudW0iLG51bGxdLFswLCJ2ZXJzaW9uIiwic2lkIixudWxsXSxbMSwiTm90aWNlIiwic2lkIixudWxsXSxbWzEyLDBdLCJDb3B5cmlnaHQiLCJzaWQiLG51bGxdLFsyLCJGdWxsTmFtZSIsInNpZCIsbnVsbF0sWzMsIkZhbWlseU5hbWUiLCJzaWQiLG51bGxdLFs0LCJXZWlnaHQiLCJzaWQiLG51bGxdLFtbMTIsMV0sImlzRml4ZWRQaXRjaCIsIm51bSIsMF0sW1sxMiwyXSwiSXRhbGljQW5nbGUiLCJudW0iLDBdLFtbMTIsM10sIlVuZGVybGluZVBvc2l0aW9uIiwibnVtIiwtMTAwXSxbWzEyLDRdLCJVbmRlcmxpbmVUaGlja25lc3MiLCJudW0iLDUwXSxbWzEyLDVdLCJQYWludFR5cGUiLCJudW0iLDBdLFtbMTIsNl0sIkNoYXJzdHJpbmdUeXBlIiwibnVtIiwyXSxbWzEyLDddLCJGb250TWF0cml4IixbIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFsuMDAxLDAsMCwuMDAxLDAsMF1dLFsxMywiVW5pcXVlSUQiLCJudW0iLG51bGxdLFs1LCJGb250QkJveCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbMCwwLDAsMF1dLFtbMTIsOF0sIlN0cm9rZVdpZHRoIiwibnVtIiwwXSxbMTQsIlhVSUQiLCJhcnJheSIsbnVsbF0sWzE1LCJjaGFyc2V0Iiwib2Zmc2V0IiwwXSxbMTYsIkVuY29kaW5nIiwib2Zmc2V0IiwwXSxbMTcsIkNoYXJTdHJpbmdzIiwib2Zmc2V0IiwwXSxbMTgsIlByaXZhdGUiLFsib2Zmc2V0Iiwib2Zmc2V0Il0sbnVsbF0sW1sxMiwyMV0sIlBvc3RTY3JpcHQiLCJzaWQiLG51bGxdLFtbMTIsMjJdLCJCYXNlRm9udE5hbWUiLCJzaWQiLG51bGxdLFtbMTIsMjNdLCJCYXNlRm9udEJsZW5kIiwiZGVsdGEiLG51bGxdLFtbMTIsMzFdLCJDSURGb250VmVyc2lvbiIsIm51bSIsMF0sW1sxMiwzMl0sIkNJREZvbnRSZXZpc2lvbiIsIm51bSIsMF0sW1sxMiwzM10sIkNJREZvbnRUeXBlIiwibnVtIiwwXSxbWzEyLDM0XSwiQ0lEQ291bnQiLCJudW0iLDg3MjBdLFtbMTIsMzVdLCJVSURCYXNlIiwibnVtIixudWxsXSxbWzEyLDM3XSwiRkRTZWxlY3QiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzZdLCJGREFycmF5Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM4XSwiRm9udE5hbWUiLCJzaWQiLG51bGxdXTtjbGFzcyBDRkZUb3BEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhSaSkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19Y29uc3QgTmk9W1s2LCJCbHVlVmFsdWVzIiwiZGVsdGEiLG51bGxdLFs3LCJPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFs4LCJGYW1pbHlCbHVlcyIsImRlbHRhIixudWxsXSxbOSwiRmFtaWx5T3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbWzEyLDldLCJCbHVlU2NhbGUiLCJudW0iLC4wMzk2MjVdLFtbMTIsMTBdLCJCbHVlU2hpZnQiLCJudW0iLDddLFtbMTIsMTFdLCJCbHVlRnV6eiIsIm51bSIsMV0sWzEwLCJTdGRIVyIsIm51bSIsbnVsbF0sWzExLCJTdGRWVyIsIm51bSIsbnVsbF0sW1sxMiwxMl0sIlN0ZW1TbmFwSCIsImRlbHRhIixudWxsXSxbWzEyLDEzXSwiU3RlbVNuYXBWIiwiZGVsdGEiLG51bGxdLFtbMTIsMTRdLCJGb3JjZUJvbGQiLCJudW0iLDBdLFtbMTIsMTddLCJMYW5ndWFnZUdyb3VwIiwibnVtIiwwXSxbWzEyLDE4XSwiRXhwYW5zaW9uRmFjdG9yIiwibnVtIiwuMDZdLFtbMTIsMTldLCJpbml0aWFsUmFuZG9tU2VlZCIsIm51bSIsMF0sWzIwLCJkZWZhdWx0V2lkdGhYIiwibnVtIiwwXSxbMjEsIm5vbWluYWxXaWR0aFgiLCJudW0iLDBdLFsxOSwiU3VicnMiLCJvZmZzZXQiLG51bGxdXTtjbGFzcyBDRkZQcml2YXRlRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoTmkpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fWNvbnN0IEdpPXtJU09fQURPQkU6MCxFWFBFUlQ6MSxFWFBFUlRfU1VCU0VUOjJ9O2NsYXNzIENGRkNoYXJzZXR7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9aTt0aGlzLnJhdz1hfX1jbGFzcyBDRkZFbmNvZGluZ3tjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLnByZWRlZmluZWQ9ZTt0aGlzLmZvcm1hdD10O3RoaXMuZW5jb2Rpbmc9aTt0aGlzLnJhdz1hfX1jbGFzcyBDRkZGRFNlbGVjdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZm9ybWF0PWU7dGhpcy5mZFNlbGVjdD10fWdldEZESW5kZXgoZSl7cmV0dXJuIGU8MHx8ZT49dGhpcy5mZFNlbGVjdC5sZW5ndGg/LTE6dGhpcy5mZFNlbGVjdFtlXX19Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxpKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3QgYT1pLmRhdGEscj10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7KytlKXtjb25zdCBpPTUqZStyLHM9aSsxLG49aSsyLG89aSszLGc9aSs0O2lmKDI5IT09YVtpXXx8MCE9PWFbc118fDAhPT1hW25dfHwwIT09YVtvXXx8MCE9PWFbZ10pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGM9dFtlXTthW2ldPTI5O2Fbc109Yz4+MjQmMjU1O2Fbbl09Yz4+MTYmMjU1O2Fbb109Yz4+OCYyNTU7YVtnXT0yNTUmY319fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dHJ5e3RoaXMuZGF0YS5wdXNoKC4uLmUpfWNhdGNoe3RoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KGUpfXRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9fSxpPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5hZGQoaSk7Y29uc3QgYT10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7dC5hZGQoYSk7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgaSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7aS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPVV0aWwudHJhbnNmb3JtKGUsaS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKSkpO2kuc2V0QnlOYW1lKCJGb250TWF0cml4IixlKX19Y29uc3Qgcj1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7cj8ubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBuPXMudHJhY2tlcnNbMF0sbz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQobyk7Y29uc3QgZz10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQoZyk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW4uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBpPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO24uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaSl9Y29uc3QgYz10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGMpO2NvbnN0IEM9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7bi5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZChDKTtpZihlLmlzQ0lERm9udCl7bi5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBpPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGkpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtuLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IGE9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LGEsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtuXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IGk9Q0ZGQ29tcGlsZXIuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyh0KTtpZihpKXtjb25zdCBhPXBhcnNlRmxvYXQoIjFlIisoKGlbMl0/K2lbMl06MCkraVsxXS5sZW5ndGgpKTt0PShNYXRoLnJvdW5kKGUqYSkvYSkudG9TdHJpbmcoKX1sZXQgYSxyLHM9IiI7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IGU9dFthXTtzKz0iZSI9PT1lPyItIj09PXRbKythXT8iYyI6ImIiOiIuIj09PWU/ImEiOiItIj09PWU/ImUiOmV9cys9MSZzLmxlbmd0aD8iZiI6ImZmIjtjb25zdCBuPVszMF07Zm9yKGE9MCxyPXMubGVuZ3RoO2E8cjthKz0yKW4ucHVzaChwYXJzZUludChzLnN1YnN0cmluZyhhLGErMiksMTYpKTtyZXR1cm4gbn1lbmNvZGVJbnRlZ2VyKGUpe2xldCB0O3Q9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV07cmV0dXJuIHR9Y29tcGlsZUhlYWRlcihlKXtyZXR1cm5bZS5tYWpvcixlLm1pbm9yLDQsZS5vZmZTaXplXX1jb21waWxlTmFtZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9TWF0aC5taW4oaS5sZW5ndGgsMTI3KTtsZXQgYT1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9aVt0XTsoZTwiISJ8fGU+In4ifHwiWyI9PT1lfHwiXSI9PT1lfHwiKCI9PT1lfHwiKSI9PT1lfHwieyI9PT1lfHwifSI9PT1lfHwiPCI9PT1lfHwiPiI9PT1lfHwiLyI9PT1lfHwiJSI9PT1lKSYmKGU9Il8iKTthW3RdPWV9YT1hLmpvaW4oIiIpOyIiPT09YSYmKGE9IkJhZF9Gb250X05hbWUiKTt0LmFkZChzdHJpbmdUb0J5dGVzKGEpKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZVRvcERpY3RzKGUsdCxpKXtjb25zdCBhPVtdO2xldCByPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgcyBvZiBlKXtpZihpKXtzLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKTtzLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIik7cy5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iik7cy5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKX1jb25zdCBlPW5ldyBDRkZPZmZzZXRUcmFja2VyLG49dGhpcy5jb21waWxlRGljdChzLGUpO2EucHVzaChlKTtyLmFkZChuKTtlLm9mZnNldCh0KX1yPXRoaXMuY29tcGlsZUluZGV4KHIsYSk7cmV0dXJue3RyYWNrZXJzOmEsb3V0cHV0OnJ9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LGkpe2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl7Y29uc3Qgcj1lW2FdLHM9ci5wcml2YXRlRGljdDtpZighc3x8IXIuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBuPW5ldyBDRkZPZmZzZXRUcmFja2VyLG89dGhpcy5jb21waWxlRGljdChzLG4pO2xldCBnPWkubGVuZ3RoO24ub2Zmc2V0KGcpO28ubGVuZ3RofHwoZz0wKTt0W2FdLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtvLmxlbmd0aCxnXSxpKTtpLmFkZChvKTtpZihzLnN1YnJzSW5kZXgmJnMuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChzLnN1YnJzSW5kZXgpO24uc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0saSk7aS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgZS5vcmRlcil7aWYoIShhIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgcj1lLnZhbHVlc1thXSxzPWUudHlwZXNbYV07QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pO2lmKDAhPT1yLmxlbmd0aCl7Zm9yKGxldCBuPTAsbz1zLmxlbmd0aDtuPG87KytuKXtjb25zdCBvPXNbbl0sZz1yW25dO3N3aXRjaChvKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmkucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihnKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHM9ZS5rZXlUb05hbWVNYXBbYV07dC5pc1RyYWNraW5nKHMpfHx0LnRyYWNrKHMsaS5sZW5ndGgpO2kucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2ZvcihsZXQgZT0xLHQ9ci5sZW5ndGg7ZTx0OysrZSlpLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIocltlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke299YCl9fWkucHVzaCguLi5lLm9wY29kZXNbYV0pfX1yZXR1cm4gaX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGkgb2YgZSl0LmFkZChzdHJpbmdUb0J5dGVzKGkpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJTdHJpbmdzKGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2ZvcihsZXQgaT0wO2k8ZS5jb3VudDtpKyspe2NvbnN0IGE9ZS5nZXQoaSk7MCE9PWEubGVuZ3RoP3QuYWRkKGEpOnQuYWRkKG5ldyBVaW50OEFycmF5KFsxMzksMTRdKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyc2V0KGUsdCxpLGEpe2xldCByO2NvbnN0IHM9dC0xO2lmKGEpcj1uZXcgVWludDhBcnJheShbMiwwLDAscz4+OCYyNTUsMjU1JnNdKTtlbHNle3I9bmV3IFVpbnQ4QXJyYXkoMSsyKnMpO3JbMF09MDtsZXQgdD0wO2NvbnN0IGE9ZS5jaGFyc2V0Lmxlbmd0aDtsZXQgbj0hMTtmb3IobGV0IHM9MTtzPHIubGVuZ3RoO3MrPTIpe2xldCBvPTA7aWYodDxhKXtjb25zdCBhPWUuY2hhcnNldFt0KytdO289aS5nZXRTSUQoYSk7aWYoLTE9PT1vKXtvPTA7aWYoIW4pe249ITA7d2FybihgQ291bGRuJ3QgZmluZCAke2F9IGluIENGRiBzdHJpbmdzYCl9fX1yW3NdPW8+PjgmMjU1O3JbcysxXT0yNTUmb319cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkocil9Y29tcGlsZUVuY29kaW5nKGUpe3JldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGUucmF3KX1jb21waWxlRkRTZWxlY3QoZSl7Y29uc3QgdD1lLmZvcm1hdDtsZXQgaSxhO3N3aXRjaCh0KXtjYXNlIDA6aT1uZXcgVWludDhBcnJheSgxK2UuZmRTZWxlY3QubGVuZ3RoKTtpWzBdPXQ7Zm9yKGE9MDthPGUuZmRTZWxlY3QubGVuZ3RoO2ErKylpW2ErMV09ZS5mZFNlbGVjdFthXTticmVhaztjYXNlIDM6Y29uc3Qgcj0wO2xldCBzPWUuZmRTZWxlY3RbMF07Y29uc3Qgbj1bdCwwLDAscj4+OCYyNTUsMjU1JnIsc107Zm9yKGE9MTthPGUuZmRTZWxlY3QubGVuZ3RoO2ErKyl7Y29uc3QgdD1lLmZkU2VsZWN0W2FdO2lmKHQhPT1zKXtuLnB1c2goYT4+OCYyNTUsMjU1JmEsdCk7cz10fX1jb25zdCBvPShuLmxlbmd0aC0zKS8zO25bMV09bz4+OCYyNTU7blsyXT0yNTUmbztuLnB1c2goYT4+OCYyNTUsMjU1JmEpO2k9bmV3IFVpbnQ4QXJyYXkobil9cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoaSl9Y29tcGlsZVR5cGVkQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSl9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgaT1lLm9iamVjdHMsYT1pLmxlbmd0aDtpZigwPT09YSlyZXR1cm5bMCwwXTtjb25zdCByPVthPj44JjI1NSwyNTUmYV07bGV0IHMsbixvPTE7Zm9yKHM9MDtzPGE7KytzKW8rPWlbc10ubGVuZ3RoO249bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7ci5wdXNoKG4pO2xldCBnPTE7Zm9yKHM9MDtzPGErMTtzKyspezE9PT1uP3IucHVzaCgyNTUmZyk6Mj09PW4/ci5wdXNoKGc+PjgmMjU1LDI1NSZnKTozPT09bj9yLnB1c2goZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTpyLnB1c2goZz4+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcpO2lbc10mJihnKz1pW3NdLmxlbmd0aCl9Zm9yKHM9MDtzPGE7cysrKXt0W3NdJiZ0W3NdLm9mZnNldChyLmxlbmd0aCk7ci5wdXNoKC4uLmlbc10pfXJldHVybiByfX1jb25zdCB4aT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQT02NTtlLkFFPTE5ODtlLkFFYWN1dGU9NTA4O2UuQUVtYWNyb249NDgyO2UuQUVzbWFsbD02MzQ2MjtlLkFhY3V0ZT0xOTM7ZS5BYWN1dGVzbWFsbD02MzQ1NztlLkFicmV2ZT0yNTg7ZS5BYnJldmVhY3V0ZT03ODU0O2UuQWJyZXZlY3lyaWxsaWM9MTIzMjtlLkFicmV2ZWRvdGJlbG93PTc4NjI7ZS5BYnJldmVncmF2ZT03ODU2O2UuQWJyZXZlaG9va2Fib3ZlPTc4NTg7ZS5BYnJldmV0aWxkZT03ODYwO2UuQWNhcm9uPTQ2MTtlLkFjaXJjbGU9OTM5ODtlLkFjaXJjdW1mbGV4PTE5NDtlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NDtlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MjtlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NjtlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDg7ZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4O2UuQWNpcmN1bWZsZXh0aWxkZT03ODUwO2UuQWN1dGU9NjMxNzc7ZS5BY3V0ZXNtYWxsPTYzNDEyO2UuQWN5cmlsbGljPTEwNDA7ZS5BZGJsZ3JhdmU9NTEyO2UuQWRpZXJlc2lzPTE5NjtlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQ7ZS5BZGllcmVzaXNtYWNyb249NDc4O2UuQWRpZXJlc2lzc21hbGw9NjM0NjA7ZS5BZG90YmVsb3c9Nzg0MDtlLkFkb3RtYWNyb249NDgwO2UuQWdyYXZlPTE5MjtlLkFncmF2ZXNtYWxsPTYzNDU2O2UuQWhvb2thYm92ZT03ODQyO2UuQWllY3lyaWxsaWM9MTIzNjtlLkFpbnZlcnRlZGJyZXZlPTUxNDtlLkFscGhhPTkxMztlLkFscGhhdG9ub3M9OTAyO2UuQW1hY3Jvbj0yNTY7ZS5BbW9ub3NwYWNlPTY1MzEzO2UuQW9nb25laz0yNjA7ZS5BcmluZz0xOTc7ZS5BcmluZ2FjdXRlPTUwNjtlLkFyaW5nYmVsb3c9NzY4MDtlLkFyaW5nc21hbGw9NjM0NjE7ZS5Bc21hbGw9NjMzMjk7ZS5BdGlsZGU9MTk1O2UuQXRpbGRlc21hbGw9NjM0NTk7ZS5BeWJhcm1lbmlhbj0xMzI5O2UuQj02NjtlLkJjaXJjbGU9OTM5OTtlLkJkb3RhY2NlbnQ9NzY4MjtlLkJkb3RiZWxvdz03Njg0O2UuQmVjeXJpbGxpYz0xMDQxO2UuQmVuYXJtZW5pYW49MTMzMDtlLkJldGE9OTE0O2UuQmhvb2s9Mzg1O2UuQmxpbmViZWxvdz03Njg2O2UuQm1vbm9zcGFjZT02NTMxNDtlLkJyZXZlc21hbGw9NjMyMjA7ZS5Cc21hbGw9NjMzMzA7ZS5CdG9wYmFyPTM4NjtlLkM9Njc7ZS5DYWFybWVuaWFuPTEzNDI7ZS5DYWN1dGU9MjYyO2UuQ2Fyb249NjMxNzg7ZS5DYXJvbnNtYWxsPTYzMjIxO2UuQ2Nhcm9uPTI2ODtlLkNjZWRpbGxhPTE5OTtlLkNjZWRpbGxhYWN1dGU9NzY4ODtlLkNjZWRpbGxhc21hbGw9NjM0NjM7ZS5DY2lyY2xlPTk0MDA7ZS5DY2lyY3VtZmxleD0yNjQ7ZS5DZG90PTI2NjtlLkNkb3RhY2NlbnQ9MjY2O2UuQ2VkaWxsYXNtYWxsPTYzNDE2O2UuQ2hhYXJtZW5pYW49MTM1MztlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTI7ZS5DaGVjeXJpbGxpYz0xMDYzO2UuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNDtlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDY7ZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjg7ZS5DaGVoYXJtZW5pYW49MTM0NztlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3O2UuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4O2UuQ2hpPTkzNTtlLkNob29rPTM5MTtlLkNpcmN1bWZsZXhzbWFsbD02MzIyMjtlLkNtb25vc3BhY2U9NjUzMTU7ZS5Db2FybWVuaWFuPTEzNjE7ZS5Dc21hbGw9NjMzMzE7ZS5EPTY4O2UuRFo9NDk3O2UuRFpjYXJvbj00NTI7ZS5EYWFybWVuaWFuPTEzMzI7ZS5EYWZyaWNhbj0zOTM7ZS5EY2Fyb249MjcwO2UuRGNlZGlsbGE9NzY5NjtlLkRjaXJjbGU9OTQwMTtlLkRjaXJjdW1mbGV4YmVsb3c9NzY5ODtlLkRjcm9hdD0yNzI7ZS5EZG90YWNjZW50PTc2OTA7ZS5EZG90YmVsb3c9NzY5MjtlLkRlY3lyaWxsaWM9MTA0NDtlLkRlaWNvcHRpYz0xMDA2O2UuRGVsdGE9ODcxMDtlLkRlbHRhZ3JlZWs9OTE2O2UuRGhvb2s9Mzk0O2UuRGllcmVzaXM9NjMxNzk7ZS5EaWVyZXNpc0FjdXRlPTYzMTgwO2UuRGllcmVzaXNHcmF2ZT02MzE4MTtlLkRpZXJlc2lzc21hbGw9NjM0MDA7ZS5EaWdhbW1hZ3JlZWs9OTg4O2UuRGplY3lyaWxsaWM9MTAyNjtlLkRsaW5lYmVsb3c9NzY5NDtlLkRtb25vc3BhY2U9NjUzMTY7ZS5Eb3RhY2NlbnRzbWFsbD02MzIyMztlLkRzbGFzaD0yNzI7ZS5Ec21hbGw9NjMzMzI7ZS5EdG9wYmFyPTM5NTtlLkR6PTQ5ODtlLkR6Y2Fyb249NDUzO2UuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0ODtlLkR6ZWN5cmlsbGljPTEwMjk7ZS5EemhlY3lyaWxsaWM9MTAzOTtlLkU9Njk7ZS5FYWN1dGU9MjAxO2UuRWFjdXRlc21hbGw9NjM0NjU7ZS5FYnJldmU9Mjc2O2UuRWNhcm9uPTI4MjtlLkVjZWRpbGxhYnJldmU9NzcwODtlLkVjaGFybWVuaWFuPTEzMzM7ZS5FY2lyY2xlPTk0MDI7ZS5FY2lyY3VtZmxleD0yMDI7ZS5FY2lyY3VtZmxleGFjdXRlPTc4NzA7ZS5FY2lyY3VtZmxleGJlbG93PTc3MDQ7ZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4Nzg7ZS5FY2lyY3VtZmxleGdyYXZlPTc4NzI7ZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0O2UuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NjtlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NjtlLkVjeXJpbGxpYz0xMDI4O2UuRWRibGdyYXZlPTUxNjtlLkVkaWVyZXNpcz0yMDM7ZS5FZGllcmVzaXNzbWFsbD02MzQ2NztlLkVkb3Q9Mjc4O2UuRWRvdGFjY2VudD0yNzg7ZS5FZG90YmVsb3c9Nzg2NDtlLkVmY3lyaWxsaWM9MTA2MDtlLkVncmF2ZT0yMDA7ZS5FZ3JhdmVzbWFsbD02MzQ2NDtlLkVoYXJtZW5pYW49MTMzNTtlLkVob29rYWJvdmU9Nzg2NjtlLkVpZ2h0cm9tYW49ODU1MTtlLkVpbnZlcnRlZGJyZXZlPTUxODtlLkVpb3RpZmllZGN5cmlsbGljPTExMjQ7ZS5FbGN5cmlsbGljPTEwNTE7ZS5FbGV2ZW5yb21hbj04NTU0O2UuRW1hY3Jvbj0yNzQ7ZS5FbWFjcm9uYWN1dGU9NzcwMjtlLkVtYWNyb25ncmF2ZT03NzAwO2UuRW1jeXJpbGxpYz0xMDUyO2UuRW1vbm9zcGFjZT02NTMxNztlLkVuY3lyaWxsaWM9MTA1MztlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NjtlLkVuZz0zMzA7ZS5FbmdoZWN5cmlsbGljPTExODg7ZS5Fbmhvb2tjeXJpbGxpYz0xMjIzO2UuRW9nb25laz0yODA7ZS5Fb3Blbj00MDA7ZS5FcHNpbG9uPTkxNztlLkVwc2lsb250b25vcz05MDQ7ZS5FcmN5cmlsbGljPTEwNTY7ZS5FcmV2ZXJzZWQ9Mzk4O2UuRXJldmVyc2VkY3lyaWxsaWM9MTA2OTtlLkVzY3lyaWxsaWM9MTA1NztlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NDtlLkVzaD00MjU7ZS5Fc21hbGw9NjMzMzM7ZS5FdGE9OTE5O2UuRXRhcm1lbmlhbj0xMzM2O2UuRXRhdG9ub3M9OTA1O2UuRXRoPTIwODtlLkV0aHNtYWxsPTYzNDcyO2UuRXRpbGRlPTc4Njg7ZS5FdGlsZGViZWxvdz03NzA2O2UuRXVybz04MzY0O2UuRXpoPTQzOTtlLkV6aGNhcm9uPTQ5NDtlLkV6aHJldmVyc2VkPTQ0MDtlLkY9NzA7ZS5GY2lyY2xlPTk0MDM7ZS5GZG90YWNjZW50PTc3MTA7ZS5GZWhhcm1lbmlhbj0xMzY2O2UuRmVpY29wdGljPTk5NjtlLkZob29rPTQwMTtlLkZpdGFjeXJpbGxpYz0xMTM4O2UuRml2ZXJvbWFuPTg1NDg7ZS5GbW9ub3NwYWNlPTY1MzE4O2UuRm91cnJvbWFuPTg1NDc7ZS5Gc21hbGw9NjMzMzQ7ZS5HPTcxO2UuR0JzcXVhcmU9MTMxOTE7ZS5HYWN1dGU9NTAwO2UuR2FtbWE9OTE1O2UuR2FtbWFhZnJpY2FuPTQwNDtlLkdhbmdpYWNvcHRpYz0xMDAyO2UuR2JyZXZlPTI4NjtlLkdjYXJvbj00ODY7ZS5HY2VkaWxsYT0yOTA7ZS5HY2lyY2xlPTk0MDQ7ZS5HY2lyY3VtZmxleD0yODQ7ZS5HY29tbWFhY2NlbnQ9MjkwO2UuR2RvdD0yODg7ZS5HZG90YWNjZW50PTI4ODtlLkdlY3lyaWxsaWM9MTA0MztlLkdoYWRhcm1lbmlhbj0xMzQ2O2UuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzI7ZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwO2UuR2hldXB0dXJuY3lyaWxsaWM9MTE2ODtlLkdob29rPTQwMztlLkdpbWFybWVuaWFuPTEzMzE7ZS5HamVjeXJpbGxpYz0xMDI3O2UuR21hY3Jvbj03NzEyO2UuR21vbm9zcGFjZT02NTMxOTtlLkdyYXZlPTYzMTgyO2UuR3JhdmVzbWFsbD02MzMyODtlLkdzbWFsbD02MzMzNTtlLkdzbWFsbGhvb2s9NjY3O2UuR3N0cm9rZT00ODQ7ZS5IPTcyO2UuSDE4NTMzPTk2Nzk7ZS5IMTg1NDM9OTY0MjtlLkgxODU1MT05NjQzO2UuSDIyMDczPTk2MzM7ZS5IUHNxdWFyZT0xMzI1OTtlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MjtlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMjtlLkhhcmRzaWduY3lyaWxsaWM9MTA2NjtlLkhiYXI9Mjk0O2UuSGJyZXZlYmVsb3c9NzcyMjtlLkhjZWRpbGxhPTc3MjA7ZS5IY2lyY2xlPTk0MDU7ZS5IY2lyY3VtZmxleD0yOTI7ZS5IZGllcmVzaXM9NzcxODtlLkhkb3RhY2NlbnQ9NzcxNDtlLkhkb3RiZWxvdz03NzE2O2UuSG1vbm9zcGFjZT02NTMyMDtlLkhvYXJtZW5pYW49MTM0NDtlLkhvcmljb3B0aWM9MWUzO2UuSHNtYWxsPTYzMzM2O2UuSHVuZ2FydW1sYXV0PTYzMTgzO2UuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQ7ZS5IenNxdWFyZT0xMzIwMDtlLkk9NzM7ZS5JQWN5cmlsbGljPTEwNzE7ZS5JSj0zMDY7ZS5JVWN5cmlsbGljPTEwNzA7ZS5JYWN1dGU9MjA1O2UuSWFjdXRlc21hbGw9NjM0Njk7ZS5JYnJldmU9MzAwO2UuSWNhcm9uPTQ2MztlLkljaXJjbGU9OTQwNjtlLkljaXJjdW1mbGV4PTIwNjtlLkljaXJjdW1mbGV4c21hbGw9NjM0NzA7ZS5JY3lyaWxsaWM9MTAzMDtlLklkYmxncmF2ZT01MjA7ZS5JZGllcmVzaXM9MjA3O2UuSWRpZXJlc2lzYWN1dGU9NzcyNjtlLklkaWVyZXNpc2N5cmlsbGljPTEyNTI7ZS5JZGllcmVzaXNzbWFsbD02MzQ3MTtlLklkb3Q9MzA0O2UuSWRvdGFjY2VudD0zMDQ7ZS5JZG90YmVsb3c9Nzg4MjtlLkllYnJldmVjeXJpbGxpYz0xMjM4O2UuSWVjeXJpbGxpYz0xMDQ1O2UuSWZyYWt0dXI9ODQ2NTtlLklncmF2ZT0yMDQ7ZS5JZ3JhdmVzbWFsbD02MzQ2ODtlLklob29rYWJvdmU9Nzg4MDtlLklpY3lyaWxsaWM9MTA0ODtlLklpbnZlcnRlZGJyZXZlPTUyMjtlLklpc2hvcnRjeXJpbGxpYz0xMDQ5O2UuSW1hY3Jvbj0yOTg7ZS5JbWFjcm9uY3lyaWxsaWM9MTI1MDtlLkltb25vc3BhY2U9NjUzMjE7ZS5Jbmlhcm1lbmlhbj0xMzM5O2UuSW9jeXJpbGxpYz0xMDI1O2UuSW9nb25laz0zMDI7ZS5Jb3RhPTkyMTtlLklvdGFhZnJpY2FuPTQwNjtlLklvdGFkaWVyZXNpcz05Mzg7ZS5Jb3RhdG9ub3M9OTA2O2UuSXNtYWxsPTYzMzM3O2UuSXN0cm9rZT00MDc7ZS5JdGlsZGU9Mjk2O2UuSXRpbGRlYmVsb3c9NzcyNDtlLkl6aGl0c2FjeXJpbGxpYz0xMTQwO2UuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MjtlLko9NzQ7ZS5KYWFybWVuaWFuPTEzNDU7ZS5KY2lyY2xlPTk0MDc7ZS5KY2lyY3VtZmxleD0zMDg7ZS5KZWN5cmlsbGljPTEwMzI7ZS5KaGVoYXJtZW5pYW49MTM1NTtlLkptb25vc3BhY2U9NjUzMjI7ZS5Kc21hbGw9NjMzMzg7ZS5LPTc1O2UuS0JzcXVhcmU9MTMxODk7ZS5LS3NxdWFyZT0xMzI2MTtlLkthYmFzaGtpcmN5cmlsbGljPTExODQ7ZS5LYWN1dGU9NzcyODtlLkthY3lyaWxsaWM9MTA1MDtlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3ODtlLkthaG9va2N5cmlsbGljPTEyMTk7ZS5LYXBwYT05MjI7ZS5LYXN0cm9rZWN5cmlsbGljPTExODI7ZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MDtlLktjYXJvbj00ODg7ZS5LY2VkaWxsYT0zMTA7ZS5LY2lyY2xlPTk0MDg7ZS5LY29tbWFhY2NlbnQ9MzEwO2UuS2RvdGJlbG93PTc3MzA7ZS5LZWhhcm1lbmlhbj0xMzY0O2UuS2VuYXJtZW5pYW49MTM0MztlLktoYWN5cmlsbGljPTEwNjE7ZS5LaGVpY29wdGljPTk5ODtlLktob29rPTQwODtlLktqZWN5cmlsbGljPTEwMzY7ZS5LbGluZWJlbG93PTc3MzI7ZS5LbW9ub3NwYWNlPTY1MzIzO2UuS29wcGFjeXJpbGxpYz0xMTUyO2UuS29wcGFncmVlaz05OTA7ZS5Lc2ljeXJpbGxpYz0xMTM0O2UuS3NtYWxsPTYzMzM5O2UuTD03NjtlLkxKPTQ1NTtlLkxMPTYzMTY3O2UuTGFjdXRlPTMxMztlLkxhbWJkYT05MjM7ZS5MY2Fyb249MzE3O2UuTGNlZGlsbGE9MzE1O2UuTGNpcmNsZT05NDA5O2UuTGNpcmN1bWZsZXhiZWxvdz03NzQwO2UuTGNvbW1hYWNjZW50PTMxNTtlLkxkb3Q9MzE5O2UuTGRvdGFjY2VudD0zMTk7ZS5MZG90YmVsb3c9NzczNDtlLkxkb3RiZWxvd21hY3Jvbj03NzM2O2UuTGl3bmFybWVuaWFuPTEzNDA7ZS5Maj00NTY7ZS5MamVjeXJpbGxpYz0xMDMzO2UuTGxpbmViZWxvdz03NzM4O2UuTG1vbm9zcGFjZT02NTMyNDtlLkxzbGFzaD0zMjE7ZS5Mc2xhc2hzbWFsbD02MzIyNTtlLkxzbWFsbD02MzM0MDtlLk09Nzc7ZS5NQnNxdWFyZT0xMzE5MDtlLk1hY3Jvbj02MzE4NDtlLk1hY3JvbnNtYWxsPTYzNDA3O2UuTWFjdXRlPTc3NDI7ZS5NY2lyY2xlPTk0MTA7ZS5NZG90YWNjZW50PTc3NDQ7ZS5NZG90YmVsb3c9Nzc0NjtlLk1lbmFybWVuaWFuPTEzNDg7ZS5NbW9ub3NwYWNlPTY1MzI1O2UuTXNtYWxsPTYzMzQxO2UuTXR1cm5lZD00MTI7ZS5NdT05MjQ7ZS5OPTc4O2UuTko9NDU4O2UuTmFjdXRlPTMyMztlLk5jYXJvbj0zMjc7ZS5OY2VkaWxsYT0zMjU7ZS5OY2lyY2xlPTk0MTE7ZS5OY2lyY3VtZmxleGJlbG93PTc3NTQ7ZS5OY29tbWFhY2NlbnQ9MzI1O2UuTmRvdGFjY2VudD03NzQ4O2UuTmRvdGJlbG93PTc3NTA7ZS5OaG9va2xlZnQ9NDEzO2UuTmluZXJvbWFuPTg1NTI7ZS5Oaj00NTk7ZS5OamVjeXJpbGxpYz0xMDM0O2UuTmxpbmViZWxvdz03NzUyO2UuTm1vbm9zcGFjZT02NTMyNjtlLk5vd2FybWVuaWFuPTEzNTA7ZS5Oc21hbGw9NjMzNDI7ZS5OdGlsZGU9MjA5O2UuTnRpbGRlc21hbGw9NjM0NzM7ZS5OdT05MjU7ZS5PPTc5O2UuT0U9MzM4O2UuT0VzbWFsbD02MzIyNjtlLk9hY3V0ZT0yMTE7ZS5PYWN1dGVzbWFsbD02MzQ3NTtlLk9iYXJyZWRjeXJpbGxpYz0xMjU2O2UuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1ODtlLk9icmV2ZT0zMzQ7ZS5PY2Fyb249NDY1O2UuT2NlbnRlcmVkdGlsZGU9NDE1O2UuT2NpcmNsZT05NDEyO2UuT2NpcmN1bWZsZXg9MjEyO2UuT2NpcmN1bWZsZXhhY3V0ZT03ODg4O2UuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2O2UuT2NpcmN1bWZsZXhncmF2ZT03ODkwO2UuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MjtlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzY7ZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQ7ZS5PY3lyaWxsaWM9MTA1NDtlLk9kYmxhY3V0ZT0zMzY7ZS5PZGJsZ3JhdmU9NTI0O2UuT2RpZXJlc2lzPTIxNDtlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQ7ZS5PZGllcmVzaXNzbWFsbD02MzQ3ODtlLk9kb3RiZWxvdz03ODg0O2UuT2dvbmVrc21hbGw9NjMyMjc7ZS5PZ3JhdmU9MjEwO2UuT2dyYXZlc21hbGw9NjM0NzQ7ZS5PaGFybWVuaWFuPTEzNjU7ZS5PaG09ODQ4NjtlLk9ob29rYWJvdmU9Nzg4NjtlLk9ob3JuPTQxNjtlLk9ob3JuYWN1dGU9Nzg5ODtlLk9ob3JuZG90YmVsb3c9NzkwNjtlLk9ob3JuZ3JhdmU9NzkwMDtlLk9ob3JuaG9va2Fib3ZlPTc5MDI7ZS5PaG9ybnRpbGRlPTc5MDQ7ZS5PaHVuZ2FydW1sYXV0PTMzNjtlLk9pPTQxODtlLk9pbnZlcnRlZGJyZXZlPTUyNjtlLk9tYWNyb249MzMyO2UuT21hY3JvbmFjdXRlPTc3NjI7ZS5PbWFjcm9uZ3JhdmU9Nzc2MDtlLk9tZWdhPTg0ODY7ZS5PbWVnYWN5cmlsbGljPTExMjA7ZS5PbWVnYWdyZWVrPTkzNztlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2O2UuT21lZ2F0aXRsb2N5cmlsbGljPTExNDg7ZS5PbWVnYXRvbm9zPTkxMTtlLk9taWNyb249OTI3O2UuT21pY3JvbnRvbm9zPTkwODtlLk9tb25vc3BhY2U9NjUzMjc7ZS5PbmVyb21hbj04NTQ0O2UuT29nb25laz00OTA7ZS5Pb2dvbmVrbWFjcm9uPTQ5MjtlLk9vcGVuPTM5MDtlLk9zbGFzaD0yMTY7ZS5Pc2xhc2hhY3V0ZT01MTA7ZS5Pc2xhc2hzbWFsbD02MzQ4MDtlLk9zbWFsbD02MzM0MztlLk9zdHJva2VhY3V0ZT01MTA7ZS5PdGN5cmlsbGljPTExNTA7ZS5PdGlsZGU9MjEzO2UuT3RpbGRlYWN1dGU9Nzc1NjtlLk90aWxkZWRpZXJlc2lzPTc3NTg7ZS5PdGlsZGVzbWFsbD02MzQ3NztlLlA9ODA7ZS5QYWN1dGU9Nzc2NDtlLlBjaXJjbGU9OTQxMztlLlBkb3RhY2NlbnQ9Nzc2NjtlLlBlY3lyaWxsaWM9MTA1NTtlLlBlaGFybWVuaWFuPTEzNTQ7ZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwO2UuUGhpPTkzNDtlLlBob29rPTQyMDtlLlBpPTkyODtlLlBpd3Jhcm1lbmlhbj0xMzYzO2UuUG1vbm9zcGFjZT02NTMyODtlLlBzaT05MzY7ZS5Qc2ljeXJpbGxpYz0xMTM2O2UuUHNtYWxsPTYzMzQ0O2UuUT04MTtlLlFjaXJjbGU9OTQxNDtlLlFtb25vc3BhY2U9NjUzMjk7ZS5Rc21hbGw9NjMzNDU7ZS5SPTgyO2UuUmFhcm1lbmlhbj0xMzU2O2UuUmFjdXRlPTM0MDtlLlJjYXJvbj0zNDQ7ZS5SY2VkaWxsYT0zNDI7ZS5SY2lyY2xlPTk0MTU7ZS5SY29tbWFhY2NlbnQ9MzQyO2UuUmRibGdyYXZlPTUyODtlLlJkb3RhY2NlbnQ9Nzc2ODtlLlJkb3RiZWxvdz03NzcwO2UuUmRvdGJlbG93bWFjcm9uPTc3NzI7ZS5SZWhhcm1lbmlhbj0xMzYwO2UuUmZyYWt0dXI9ODQ3NjtlLlJobz05Mjk7ZS5SaW5nc21hbGw9NjMyMjg7ZS5SaW52ZXJ0ZWRicmV2ZT01MzA7ZS5SbGluZWJlbG93PTc3NzQ7ZS5SbW9ub3NwYWNlPTY1MzMwO2UuUnNtYWxsPTYzMzQ2O2UuUnNtYWxsaW52ZXJ0ZWQ9NjQxO2UuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQ7ZS5TPTgzO2UuU0YwMTAwMDA9OTQ4NDtlLlNGMDIwMDAwPTk0OTI7ZS5TRjAzMDAwMD05NDg4O2UuU0YwNDAwMDA9OTQ5NjtlLlNGMDUwMDAwPTk1MzI7ZS5TRjA2MDAwMD05NTE2O2UuU0YwNzAwMDA9OTUyNDtlLlNGMDgwMDAwPTk1MDA7ZS5TRjA5MDAwMD05NTA4O2UuU0YxMDAwMDA9OTQ3MjtlLlNGMTEwMDAwPTk0NzQ7ZS5TRjE5MDAwMD05NTY5O2UuU0YyMDAwMDA9OTU3MDtlLlNGMjEwMDAwPTk1NTg7ZS5TRjIyMDAwMD05NTU3O2UuU0YyMzAwMDA9OTU3MTtlLlNGMjQwMDAwPTk1NTM7ZS5TRjI1MDAwMD05NTU5O2UuU0YyNjAwMDA9OTU2NTtlLlNGMjcwMDAwPTk1NjQ7ZS5TRjI4MDAwMD05NTYzO2UuU0YzNjAwMDA9OTU2NjtlLlNGMzcwMDAwPTk1Njc7ZS5TRjM4MDAwMD05NTYyO2UuU0YzOTAwMDA9OTU1NjtlLlNGNDAwMDAwPTk1Nzc7ZS5TRjQxMDAwMD05NTc0O2UuU0Y0MjAwMDA9OTU2ODtlLlNGNDMwMDAwPTk1NTI7ZS5TRjQ0MDAwMD05NTgwO2UuU0Y0NTAwMDA9OTU3NTtlLlNGNDYwMDAwPTk1NzY7ZS5TRjQ3MDAwMD05NTcyO2UuU0Y0ODAwMDA9OTU3MztlLlNGNDkwMDAwPTk1NjE7ZS5TRjUwMDAwMD05NTYwO2UuU0Y1MTAwMDA9OTU1NDtlLlNGNTIwMDAwPTk1NTU7ZS5TRjUzMDAwMD05NTc5O2UuU0Y1NDAwMDA9OTU3ODtlLlNhY3V0ZT0zNDY7ZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MDtlLlNhbXBpZ3JlZWs9OTkyO2UuU2Nhcm9uPTM1MjtlLlNjYXJvbmRvdGFjY2VudD03NzgyO2UuU2Nhcm9uc21hbGw9NjMyMjk7ZS5TY2VkaWxsYT0zNTA7ZS5TY2h3YT0zOTk7ZS5TY2h3YWN5cmlsbGljPTEyNDA7ZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MjtlLlNjaXJjbGU9OTQxNjtlLlNjaXJjdW1mbGV4PTM0ODtlLlNjb21tYWFjY2VudD01MzY7ZS5TZG90YWNjZW50PTc3NzY7ZS5TZG90YmVsb3c9Nzc3ODtlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0O2UuU2VoYXJtZW5pYW49MTM1NztlLlNldmVucm9tYW49ODU1MDtlLlNoYWFybWVuaWFuPTEzNTE7ZS5TaGFjeXJpbGxpYz0xMDY0O2UuU2hjaGFjeXJpbGxpYz0xMDY1O2UuU2hlaWNvcHRpYz05OTQ7ZS5TaGhhY3lyaWxsaWM9MTIxMDtlLlNoaW1hY29wdGljPTEwMDQ7ZS5TaWdtYT05MzE7ZS5TaXhyb21hbj04NTQ5O2UuU21vbm9zcGFjZT02NTMzMTtlLlNvZnRzaWduY3lyaWxsaWM9MTA2ODtlLlNzbWFsbD02MzM0NztlLlN0aWdtYWdyZWVrPTk4NjtlLlQ9ODQ7ZS5UYXU9OTMyO2UuVGJhcj0zNTg7ZS5UY2Fyb249MzU2O2UuVGNlZGlsbGE9MzU0O2UuVGNpcmNsZT05NDE3O2UuVGNpcmN1bWZsZXhiZWxvdz03NzkyO2UuVGNvbW1hYWNjZW50PTM1NDtlLlRkb3RhY2NlbnQ9Nzc4NjtlLlRkb3RiZWxvdz03Nzg4O2UuVGVjeXJpbGxpYz0xMDU4O2UuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2O2UuVGVucm9tYW49ODU1MztlLlRldHNlY3lyaWxsaWM9MTIwNDtlLlRoZXRhPTkyMDtlLlRob29rPTQyODtlLlRob3JuPTIyMjtlLlRob3Juc21hbGw9NjM0ODY7ZS5UaHJlZXJvbWFuPTg1NDY7ZS5UaWxkZXNtYWxsPTYzMjMwO2UuVGl3bmFybWVuaWFuPTEzNTk7ZS5UbGluZWJlbG93PTc3OTA7ZS5UbW9ub3NwYWNlPTY1MzMyO2UuVG9hcm1lbmlhbj0xMzM3O2UuVG9uZWZpdmU9NDQ0O2UuVG9uZXNpeD0zODg7ZS5Ub25ldHdvPTQyMztlLlRyZXRyb2ZsZXhob29rPTQzMDtlLlRzZWN5cmlsbGljPTEwNjI7ZS5Uc2hlY3lyaWxsaWM9MTAzNTtlLlRzbWFsbD02MzM0ODtlLlR3ZWx2ZXJvbWFuPTg1NTU7ZS5Ud29yb21hbj04NTQ1O2UuVT04NTtlLlVhY3V0ZT0yMTg7ZS5VYWN1dGVzbWFsbD02MzQ4MjtlLlVicmV2ZT0zNjQ7ZS5VY2Fyb249NDY3O2UuVWNpcmNsZT05NDE4O2UuVWNpcmN1bWZsZXg9MjE5O2UuVWNpcmN1bWZsZXhiZWxvdz03Nzk4O2UuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MztlLlVjeXJpbGxpYz0xMDU5O2UuVWRibGFjdXRlPTM2ODtlLlVkYmxncmF2ZT01MzI7ZS5VZGllcmVzaXM9MjIwO2UuVWRpZXJlc2lzYWN1dGU9NDcxO2UuVWRpZXJlc2lzYmVsb3c9Nzc5NDtlLlVkaWVyZXNpc2Nhcm9uPTQ3MztlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQ7ZS5VZGllcmVzaXNncmF2ZT00NzU7ZS5VZGllcmVzaXNtYWNyb249NDY5O2UuVWRpZXJlc2lzc21hbGw9NjM0ODQ7ZS5VZG90YmVsb3c9NzkwODtlLlVncmF2ZT0yMTc7ZS5VZ3JhdmVzbWFsbD02MzQ4MTtlLlVob29rYWJvdmU9NzkxMDtlLlVob3JuPTQzMTtlLlVob3JuYWN1dGU9NzkxMjtlLlVob3JuZG90YmVsb3c9NzkyMDtlLlVob3JuZ3JhdmU9NzkxNDtlLlVob3JuaG9va2Fib3ZlPTc5MTY7ZS5VaG9ybnRpbGRlPTc5MTg7ZS5VaHVuZ2FydW1sYXV0PTM2ODtlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2O2UuVWludmVydGVkYnJldmU9NTM0O2UuVWtjeXJpbGxpYz0xMTQ0O2UuVW1hY3Jvbj0zNjI7ZS5VbWFjcm9uY3lyaWxsaWM9MTI2MjtlLlVtYWNyb25kaWVyZXNpcz03ODAyO2UuVW1vbm9zcGFjZT02NTMzMztlLlVvZ29uZWs9MzcwO2UuVXBzaWxvbj05MzM7ZS5VcHNpbG9uMT05Nzg7ZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5O2UuVXBzaWxvbmFmcmljYW49NDMzO2UuVXBzaWxvbmRpZXJlc2lzPTkzOTtlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODA7ZS5VcHNpbG9uaG9va3N5bWJvbD05Nzg7ZS5VcHNpbG9udG9ub3M9OTEwO2UuVXJpbmc9MzY2O2UuVXNob3J0Y3lyaWxsaWM9MTAzODtlLlVzbWFsbD02MzM0OTtlLlVzdHJhaWdodGN5cmlsbGljPTExOTg7ZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwO2UuVXRpbGRlPTM2MDtlLlV0aWxkZWFjdXRlPTc4MDA7ZS5VdGlsZGViZWxvdz03Nzk2O2UuVj04NjtlLlZjaXJjbGU9OTQxOTtlLlZkb3RiZWxvdz03ODA2O2UuVmVjeXJpbGxpYz0xMDQyO2UuVmV3YXJtZW5pYW49MTM1ODtlLlZob29rPTQzNDtlLlZtb25vc3BhY2U9NjUzMzQ7ZS5Wb2FybWVuaWFuPTEzNTI7ZS5Wc21hbGw9NjMzNTA7ZS5WdGlsZGU9NzgwNDtlLlc9ODc7ZS5XYWN1dGU9NzgxMDtlLldjaXJjbGU9OTQyMDtlLldjaXJjdW1mbGV4PTM3MjtlLldkaWVyZXNpcz03ODEyO2UuV2RvdGFjY2VudD03ODE0O2UuV2RvdGJlbG93PTc4MTY7ZS5XZ3JhdmU9NzgwODtlLldtb25vc3BhY2U9NjUzMzU7ZS5Xc21hbGw9NjMzNTE7ZS5YPTg4O2UuWGNpcmNsZT05NDIxO2UuWGRpZXJlc2lzPTc4MjA7ZS5YZG90YWNjZW50PTc4MTg7ZS5YZWhhcm1lbmlhbj0xMzQxO2UuWGk9OTI2O2UuWG1vbm9zcGFjZT02NTMzNjtlLlhzbWFsbD02MzM1MjtlLlk9ODk7ZS5ZYWN1dGU9MjIxO2UuWWFjdXRlc21hbGw9NjM0ODU7ZS5ZYXRjeXJpbGxpYz0xMTIyO2UuWWNpcmNsZT05NDIyO2UuWWNpcmN1bWZsZXg9Mzc0O2UuWWRpZXJlc2lzPTM3NjtlLllkaWVyZXNpc3NtYWxsPTYzNDg3O2UuWWRvdGFjY2VudD03ODIyO2UuWWRvdGJlbG93PTc5MjQ7ZS5ZZXJpY3lyaWxsaWM9MTA2NztlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzI7ZS5ZZ3JhdmU9NzkyMjtlLllob29rPTQzNTtlLllob29rYWJvdmU9NzkyNjtlLllpYXJtZW5pYW49MTM0OTtlLllpY3lyaWxsaWM9MTAzMTtlLllpd25hcm1lbmlhbj0xMzYyO2UuWW1vbm9zcGFjZT02NTMzNztlLllzbWFsbD02MzM1MztlLll0aWxkZT03OTI4O2UuWXVzYmlnY3lyaWxsaWM9MTEzMDtlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMjtlLll1c2xpdHRsZWN5cmlsbGljPTExMjY7ZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjg7ZS5aPTkwO2UuWmFhcm1lbmlhbj0xMzM0O2UuWmFjdXRlPTM3NztlLlpjYXJvbj0zODE7ZS5aY2Fyb25zbWFsbD02MzIzMTtlLlpjaXJjbGU9OTQyMztlLlpjaXJjdW1mbGV4PTc4MjQ7ZS5aZG90PTM3OTtlLlpkb3RhY2NlbnQ9Mzc5O2UuWmRvdGJlbG93PTc4MjY7ZS5aZWN5cmlsbGljPTEwNDc7ZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzY7ZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NjtlLlpldGE9OTE4O2UuWmhlYXJtZW5pYW49MTMzODtlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNztlLlpoZWN5cmlsbGljPTEwNDY7ZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0O2UuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0O2UuWmxpbmViZWxvdz03ODI4O2UuWm1vbm9zcGFjZT02NTMzODtlLlpzbWFsbD02MzM1NDtlLlpzdHJva2U9NDM3O2UuYT05NztlLmFhYmVuZ2FsaT0yNDM4O2UuYWFjdXRlPTIyNTtlLmFhZGV2YT0yMzEwO2UuYWFndWphcmF0aT0yNjk0O2UuYWFndXJtdWtoaT0yNTY2O2UuYWFtYXRyYWd1cm11a2hpPTI2MjI7ZS5hYXJ1c3F1YXJlPTEzMDU5O2UuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQ7ZS5hYXZvd2Vsc2lnbmRldmE9MjM2NjtlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MDtlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1O2UuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNjtlLmFiZW5nYWxpPTI0Mzc7ZS5hYm9wb21vZm89MTI1NzA7ZS5hYnJldmU9MjU5O2UuYWJyZXZlYWN1dGU9Nzg1NTtlLmFicmV2ZWN5cmlsbGljPTEyMzM7ZS5hYnJldmVkb3RiZWxvdz03ODYzO2UuYWJyZXZlZ3JhdmU9Nzg1NztlLmFicmV2ZWhvb2thYm92ZT03ODU5O2UuYWJyZXZldGlsZGU9Nzg2MTtlLmFjYXJvbj00NjI7ZS5hY2lyY2xlPTk0MjQ7ZS5hY2lyY3VtZmxleD0yMjY7ZS5hY2lyY3VtZmxleGFjdXRlPTc4NDU7ZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTM7ZS5hY2lyY3VtZmxleGdyYXZlPTc4NDc7ZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5O2UuYWNpcmN1bWZsZXh0aWxkZT03ODUxO2UuYWN1dGU9MTgwO2UuYWN1dGViZWxvd2NtYj03OTE7ZS5hY3V0ZWNtYj03Njk7ZS5hY3V0ZWNvbWI9NzY5O2UuYWN1dGVkZXZhPTIzODg7ZS5hY3V0ZWxvd21vZD03MTk7ZS5hY3V0ZXRvbmVjbWI9ODMzO2UuYWN5cmlsbGljPTEwNzI7ZS5hZGJsZ3JhdmU9NTEzO2UuYWRkYWtndXJtdWtoaT0yNjczO2UuYWRldmE9MjMwOTtlLmFkaWVyZXNpcz0yMjg7ZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1O2UuYWRpZXJlc2lzbWFjcm9uPTQ3OTtlLmFkb3RiZWxvdz03ODQxO2UuYWRvdG1hY3Jvbj00ODE7ZS5hZT0yMzA7ZS5hZWFjdXRlPTUwOTtlLmFla29yZWFuPTEyNjI0O2UuYWVtYWNyb249NDgzO2UuYWZpaTAwMjA4PTgyMTM7ZS5hZmlpMDg5NDE9ODM1NjtlLmFmaWkxMDAxNz0xMDQwO2UuYWZpaTEwMDE4PTEwNDE7ZS5hZmlpMTAwMTk9MTA0MjtlLmFmaWkxMDAyMD0xMDQzO2UuYWZpaTEwMDIxPTEwNDQ7ZS5hZmlpMTAwMjI9MTA0NTtlLmFmaWkxMDAyMz0xMDI1O2UuYWZpaTEwMDI0PTEwNDY7ZS5hZmlpMTAwMjU9MTA0NztlLmFmaWkxMDAyNj0xMDQ4O2UuYWZpaTEwMDI3PTEwNDk7ZS5hZmlpMTAwMjg9MTA1MDtlLmFmaWkxMDAyOT0xMDUxO2UuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MztlLmFmaWkxMDAzMj0xMDU0O2UuYWZpaTEwMDMzPTEwNTU7ZS5hZmlpMTAwMzQ9MTA1NjtlLmFmaWkxMDAzNT0xMDU3O2UuYWZpaTEwMDM2PTEwNTg7ZS5hZmlpMTAwMzc9MTA1OTtlLmFmaWkxMDAzOD0xMDYwO2UuYWZpaTEwMDM5PTEwNjE7ZS5hZmlpMTAwNDA9MTA2MjtlLmFmaWkxMDA0MT0xMDYzO2UuYWZpaTEwMDQyPTEwNjQ7ZS5hZmlpMTAwNDM9MTA2NTtlLmFmaWkxMDA0ND0xMDY2O2UuYWZpaTEwMDQ1PTEwNjc7ZS5hZmlpMTAwNDY9MTA2ODtlLmFmaWkxMDA0Nz0xMDY5O2UuYWZpaTEwMDQ4PTEwNzA7ZS5hZmlpMTAwNDk9MTA3MTtlLmFmaWkxMDA1MD0xMTY4O2UuYWZpaTEwMDUxPTEwMjY7ZS5hZmlpMTAwNTI9MTAyNztlLmFmaWkxMDA1Mz0xMDI4O2UuYWZpaTEwMDU0PTEwMjk7ZS5hZmlpMTAwNTU9MTAzMDtlLmFmaWkxMDA1Nj0xMDMxO2UuYWZpaTEwMDU3PTEwMzI7ZS5hZmlpMTAwNTg9MTAzMztlLmFmaWkxMDA1OT0xMDM0O2UuYWZpaTEwMDYwPTEwMzU7ZS5hZmlpMTAwNjE9MTAzNjtlLmFmaWkxMDA2Mj0xMDM4O2UuYWZpaTEwMDYzPTYzMTcyO2UuYWZpaTEwMDY0PTYzMTczO2UuYWZpaTEwMDY1PTEwNzI7ZS5hZmlpMTAwNjY9MTA3MztlLmFmaWkxMDA2Nz0xMDc0O2UuYWZpaTEwMDY4PTEwNzU7ZS5hZmlpMTAwNjk9MTA3NjtlLmFmaWkxMDA3MD0xMDc3O2UuYWZpaTEwMDcxPTExMDU7ZS5hZmlpMTAwNzI9MTA3ODtlLmFmaWkxMDA3Mz0xMDc5O2UuYWZpaTEwMDc0PTEwODA7ZS5hZmlpMTAwNzU9MTA4MTtlLmFmaWkxMDA3Nj0xMDgyO2UuYWZpaTEwMDc3PTEwODM7ZS5hZmlpMTAwNzg9MTA4NDtlLmFmaWkxMDA3OT0xMDg1O2UuYWZpaTEwMDgwPTEwODY7ZS5hZmlpMTAwODE9MTA4NztlLmFmaWkxMDA4Mj0xMDg4O2UuYWZpaTEwMDgzPTEwODk7ZS5hZmlpMTAwODQ9MTA5MDtlLmFmaWkxMDA4NT0xMDkxO2UuYWZpaTEwMDg2PTEwOTI7ZS5hZmlpMTAwODc9MTA5MztlLmFmaWkxMDA4OD0xMDk0O2UuYWZpaTEwMDg5PTEwOTU7ZS5hZmlpMTAwOTA9MTA5NjtlLmFmaWkxMDA5MT0xMDk3O2UuYWZpaTEwMDkyPTEwOTg7ZS5hZmlpMTAwOTM9MTA5OTtlLmFmaWkxMDA5ND0xMTAwO2UuYWZpaTEwMDk1PTExMDE7ZS5hZmlpMTAwOTY9MTEwMjtlLmFmaWkxMDA5Nz0xMTAzO2UuYWZpaTEwMDk4PTExNjk7ZS5hZmlpMTAwOTk9MTEwNjtlLmFmaWkxMDEwMD0xMTA3O2UuYWZpaTEwMTAxPTExMDg7ZS5hZmlpMTAxMDI9MTEwOTtlLmFmaWkxMDEwMz0xMTEwO2UuYWZpaTEwMTA0PTExMTE7ZS5hZmlpMTAxMDU9MTExMjtlLmFmaWkxMDEwNj0xMTEzO2UuYWZpaTEwMTA3PTExMTQ7ZS5hZmlpMTAxMDg9MTExNTtlLmFmaWkxMDEwOT0xMTE2O2UuYWZpaTEwMTEwPTExMTg7ZS5hZmlpMTAxNDU9MTAzOTtlLmFmaWkxMDE0Nj0xMTIyO2UuYWZpaTEwMTQ3PTExMzg7ZS5hZmlpMTAxNDg9MTE0MDtlLmFmaWkxMDE5Mj02MzE3NDtlLmFmaWkxMDE5Mz0xMTE5O2UuYWZpaTEwMTk0PTExMjM7ZS5hZmlpMTAxOTU9MTEzOTtlLmFmaWkxMDE5Nj0xMTQxO2UuYWZpaTEwODMxPTYzMTc1O2UuYWZpaTEwODMyPTYzMTc2O2UuYWZpaTEwODQ2PTEyNDE7ZS5hZmlpMjk5PTgyMDY7ZS5hZmlpMzAwPTgyMDc7ZS5hZmlpMzAxPTgyMDU7ZS5hZmlpNTczODE9MTY0MjtlLmFmaWk1NzM4OD0xNTQ4O2UuYWZpaTU3MzkyPTE2MzI7ZS5hZmlpNTczOTM9MTYzMztlLmFmaWk1NzM5ND0xNjM0O2UuYWZpaTU3Mzk1PTE2MzU7ZS5hZmlpNTczOTY9MTYzNjtlLmFmaWk1NzM5Nz0xNjM3O2UuYWZpaTU3Mzk4PTE2Mzg7ZS5hZmlpNTczOTk9MTYzOTtlLmFmaWk1NzQwMD0xNjQwO2UuYWZpaTU3NDAxPTE2NDE7ZS5hZmlpNTc0MDM9MTU2MztlLmFmaWk1NzQwNz0xNTY3O2UuYWZpaTU3NDA5PTE1Njk7ZS5hZmlpNTc0MTA9MTU3MDtlLmFmaWk1NzQxMT0xNTcxO2UuYWZpaTU3NDEyPTE1NzI7ZS5hZmlpNTc0MTM9MTU3MztlLmFmaWk1NzQxND0xNTc0O2UuYWZpaTU3NDE1PTE1NzU7ZS5hZmlpNTc0MTY9MTU3NjtlLmFmaWk1NzQxNz0xNTc3O2UuYWZpaTU3NDE4PTE1Nzg7ZS5hZmlpNTc0MTk9MTU3OTtlLmFmaWk1NzQyMD0xNTgwO2UuYWZpaTU3NDIxPTE1ODE7ZS5hZmlpNTc0MjI9MTU4MjtlLmFmaWk1NzQyMz0xNTgzO2UuYWZpaTU3NDI0PTE1ODQ7ZS5hZmlpNTc0MjU9MTU4NTtlLmFmaWk1NzQyNj0xNTg2O2UuYWZpaTU3NDI3PTE1ODc7ZS5hZmlpNTc0Mjg9MTU4ODtlLmFmaWk1NzQyOT0xNTg5O2UuYWZpaTU3NDMwPTE1OTA7ZS5hZmlpNTc0MzE9MTU5MTtlLmFmaWk1NzQzMj0xNTkyO2UuYWZpaTU3NDMzPTE1OTM7ZS5hZmlpNTc0MzQ9MTU5NDtlLmFmaWk1NzQ0MD0xNjAwO2UuYWZpaTU3NDQxPTE2MDE7ZS5hZmlpNTc0NDI9MTYwMjtlLmFmaWk1NzQ0Mz0xNjAzO2UuYWZpaTU3NDQ0PTE2MDQ7ZS5hZmlpNTc0NDU9MTYwNTtlLmFmaWk1NzQ0Nj0xNjA2O2UuYWZpaTU3NDQ4PTE2MDg7ZS5hZmlpNTc0NDk9MTYwOTtlLmFmaWk1NzQ1MD0xNjEwO2UuYWZpaTU3NDUxPTE2MTE7ZS5hZmlpNTc0NTI9MTYxMjtlLmFmaWk1NzQ1Mz0xNjEzO2UuYWZpaTU3NDU0PTE2MTQ7ZS5hZmlpNTc0NTU9MTYxNTtlLmFmaWk1NzQ1Nj0xNjE2O2UuYWZpaTU3NDU3PTE2MTc7ZS5hZmlpNTc0NTg9MTYxODtlLmFmaWk1NzQ3MD0xNjA3O2UuYWZpaTU3NTA1PTE3MDA7ZS5hZmlpNTc1MDY9MTY2MjtlLmFmaWk1NzUwNz0xNjcwO2UuYWZpaTU3NTA4PTE2ODg7ZS5hZmlpNTc1MDk9MTcxMTtlLmFmaWk1NzUxMT0xNjU3O2UuYWZpaTU3NTEyPTE2NzI7ZS5hZmlpNTc1MTM9MTY4MTtlLmFmaWk1NzUxND0xNzIyO2UuYWZpaTU3NTE5PTE3NDY7ZS5hZmlpNTc1MzQ9MTc0OTtlLmFmaWk1NzYzNj04MzYyO2UuYWZpaTU3NjQ1PTE0NzA7ZS5hZmlpNTc2NTg9MTQ3NTtlLmFmaWk1NzY2ND0xNDg4O2UuYWZpaTU3NjY1PTE0ODk7ZS5hZmlpNTc2NjY9MTQ5MDtlLmFmaWk1NzY2Nz0xNDkxO2UuYWZpaTU3NjY4PTE0OTI7ZS5hZmlpNTc2Njk9MTQ5MztlLmFmaWk1NzY3MD0xNDk0O2UuYWZpaTU3NjcxPTE0OTU7ZS5hZmlpNTc2NzI9MTQ5NjtlLmFmaWk1NzY3Mz0xNDk3O2UuYWZpaTU3Njc0PTE0OTg7ZS5hZmlpNTc2NzU9MTQ5OTtlLmFmaWk1NzY3Nj0xNTAwO2UuYWZpaTU3Njc3PTE1MDE7ZS5hZmlpNTc2Nzg9MTUwMjtlLmFmaWk1NzY3OT0xNTAzO2UuYWZpaTU3NjgwPTE1MDQ7ZS5hZmlpNTc2ODE9MTUwNTtlLmFmaWk1NzY4Mj0xNTA2O2UuYWZpaTU3NjgzPTE1MDc7ZS5hZmlpNTc2ODQ9MTUwODtlLmFmaWk1NzY4NT0xNTA5O2UuYWZpaTU3Njg2PTE1MTA7ZS5hZmlpNTc2ODc9MTUxMTtlLmFmaWk1NzY4OD0xNTEyO2UuYWZpaTU3Njg5PTE1MTM7ZS5hZmlpNTc2OTA9MTUxNDtlLmFmaWk1NzY5ND02NDI5ODtlLmFmaWk1NzY5NT02NDI5OTtlLmFmaWk1NzcwMD02NDMzMTtlLmFmaWk1NzcwNT02NDI4NztlLmFmaWk1NzcxNj0xNTIwO2UuYWZpaTU3NzE3PTE1MjE7ZS5hZmlpNTc3MTg9MTUyMjtlLmFmaWk1NzcyMz02NDMwOTtlLmFmaWk1Nzc5Mz0xNDYwO2UuYWZpaTU3Nzk0PTE0NjE7ZS5hZmlpNTc3OTU9MTQ2MjtlLmFmaWk1Nzc5Nj0xNDY3O2UuYWZpaTU3Nzk3PTE0NjQ7ZS5hZmlpNTc3OTg9MTQ2MztlLmFmaWk1Nzc5OT0xNDU2O2UuYWZpaTU3ODAwPTE0NTg7ZS5hZmlpNTc4MDE9MTQ1NztlLmFmaWk1NzgwMj0xNDU5O2UuYWZpaTU3ODAzPTE0NzQ7ZS5hZmlpNTc4MDQ9MTQ3MztlLmFmaWk1NzgwNj0xNDY1O2UuYWZpaTU3ODA3PTE0Njg7ZS5hZmlpNTc4Mzk9MTQ2OTtlLmFmaWk1Nzg0MT0xNDcxO2UuYWZpaTU3ODQyPTE0NzI7ZS5hZmlpNTc5Mjk9NzAwO2UuYWZpaTYxMjQ4PTg0NTM7ZS5hZmlpNjEyODk9ODQ2NztlLmFmaWk2MTM1Mj04NDcwO2UuYWZpaTYxNTczPTgyMzY7ZS5hZmlpNjE1NzQ9ODIzNztlLmFmaWk2MTU3NT04MjM4O2UuYWZpaTYxNjY0PTgyMDQ7ZS5hZmlpNjMxNjc9MTY0NTtlLmFmaWk2NDkzNz03MDE7ZS5hZ3JhdmU9MjI0O2UuYWd1amFyYXRpPTI2OTM7ZS5hZ3VybXVraGk9MjU2NTtlLmFoaXJhZ2FuYT0xMjM1NDtlLmFob29rYWJvdmU9Nzg0MztlLmFpYmVuZ2FsaT0yNDQ4O2UuYWlib3BvbW9mbz0xMjU3NDtlLmFpZGV2YT0yMzIwO2UuYWllY3lyaWxsaWM9MTIzNztlLmFpZ3VqYXJhdGk9MjcwNDtlLmFpZ3VybXVraGk9MjU3NjtlLmFpbWF0cmFndXJtdWtoaT0yNjMyO2UuYWluYXJhYmljPTE1OTM7ZS5haW5maW5hbGFyYWJpYz02NTIyNjtlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjc7ZS5haW5tZWRpYWxhcmFiaWM9NjUyMjg7ZS5haW52ZXJ0ZWRicmV2ZT01MTU7ZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNDtlLmFpdm93ZWxzaWduZGV2YT0yMzc2O2UuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwO2UuYWthdGFrYW5hPTEyNDUwO2UuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzO2UuYWtvcmVhbj0xMjYyMztlLmFsZWY9MTQ4ODtlLmFsZWZhcmFiaWM9MTU3NTtlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQ7ZS5hbGVmZmluYWxhcmFiaWM9NjUxNjY7ZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxO2UuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NjtlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzM7ZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwO2UuYWxlZmhlYnJldz0xNDg4O2UuYWxlZmxhbWVkaGVicmV3PTY0MzM1O2UuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MDtlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQ7ZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5O2UuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NDtlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NztlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4O2UuYWxlZnBhdGFoaGVicmV3PTY0MzAyO2UuYWxlZnFhbWF0c2hlYnJldz02NDMwMztlLmFsZXBoPTg1MDE7ZS5hbGxlcXVhbD04NzgwO2UuYWxwaGE9OTQ1O2UuYWxwaGF0b25vcz05NDA7ZS5hbWFjcm9uPTI1NztlLmFtb25vc3BhY2U9NjUzNDU7ZS5hbXBlcnNhbmQ9Mzg7ZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODY7ZS5hbXBlcnNhbmRzbWFsbD02MzI3MDtlLmFtc3F1YXJlPTEzMjUwO2UuYW5ib3BvbW9mbz0xMjU3ODtlLmFuZ2JvcG9tb2ZvPTEyNTgwO2UuYW5nYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdraGFua2h1dGhhaT0zNjc0O2UuYW5nbGU9ODczNjtlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODc7ZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODg7ZS5hbmdsZWxlZnQ9OTAwMTtlLmFuZ2xlcmlnaHQ9OTAwMjtlLmFuZ3N0cm9tPTg0OTE7ZS5hbm90ZWxlaWE9OTAzO2UuYW51ZGF0dGFkZXZhPTIzODY7ZS5hbnVzdmFyYWJlbmdhbGk9MjQzNDtlLmFudXN2YXJhZGV2YT0yMzA2O2UuYW51c3ZhcmFndWphcmF0aT0yNjkwO2UuYW9nb25laz0yNjE7ZS5hcGFhdG9zcXVhcmU9MTMwNTY7ZS5hcGFyZW49OTM3MjtlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwO2UuYXBvc3Ryb3BoZW1vZD03MDA7ZS5hcHBsZT02Mzc0MztlLmFwcHJvYWNoZXM9ODc4NDtlLmFwcHJveGVxdWFsPTg3NzY7ZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NjtlLmFwcHJveGltYXRlbHllcXVhbD04NzczO2UuYXJhZWFla29yZWFuPTEyNjg2O2UuYXJhZWFrb3JlYW49MTI2ODU7ZS5hcmM9ODk3ODtlLmFyaWdodGhhbGZyaW5nPTc4MzQ7ZS5hcmluZz0yMjk7ZS5hcmluZ2FjdXRlPTUwNztlLmFyaW5nYmVsb3c9NzY4MTtlLmFycm93Ym90aD04NTk2O2UuYXJyb3dkYXNoZG93bj04Njc1O2UuYXJyb3dkYXNobGVmdD04NjcyO2UuYXJyb3dkYXNocmlnaHQ9ODY3NDtlLmFycm93ZGFzaHVwPTg2NzM7ZS5hcnJvd2RibGJvdGg9ODY2MDtlLmFycm93ZGJsZG93bj04NjU5O2UuYXJyb3dkYmxsZWZ0PTg2NTY7ZS5hcnJvd2RibHJpZ2h0PTg2NTg7ZS5hcnJvd2RibHVwPTg2NTc7ZS5hcnJvd2Rvd249ODU5NTtlLmFycm93ZG93bmxlZnQ9ODYwMTtlLmFycm93ZG93bnJpZ2h0PTg2MDA7ZS5hcnJvd2Rvd253aGl0ZT04NjgxO2UuYXJyb3doZWFkZG93bm1vZD03MDk7ZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNjtlLmFycm93aGVhZHJpZ2h0bW9kPTcwNztlLmFycm93aGVhZHVwbW9kPTcwODtlLmFycm93aG9yaXpleD02MzcxOTtlLmFycm93bGVmdD04NTkyO2UuYXJyb3dsZWZ0ZGJsPTg2NTY7ZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MztlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2O2UuYXJyb3dsZWZ0d2hpdGU9ODY3ODtlLmFycm93cmlnaHQ9ODU5NDtlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NTtlLmFycm93cmlnaHRoZWF2eT0xMDE0MjtlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0O2UuYXJyb3dyaWdodHdoaXRlPTg2ODA7ZS5hcnJvd3RhYmxlZnQ9ODY3NjtlLmFycm93dGFicmlnaHQ9ODY3NztlLmFycm93dXA9ODU5MztlLmFycm93dXBkbj04NTk3O2UuYXJyb3d1cGRuYnNlPTg2MTY7ZS5hcnJvd3VwZG93bmJhc2U9ODYxNjtlLmFycm93dXBsZWZ0PTg1OTg7ZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1O2UuYXJyb3d1cHJpZ2h0PTg1OTk7ZS5hcnJvd3Vwd2hpdGU9ODY3OTtlLmFycm93dmVydGV4PTYzNzE4O2UuYXNjaWljaXJjdW09OTQ7ZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MjtlLmFzY2lpdGlsZGU9MTI2O2UuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NDtlLmFzY3JpcHQ9NTkzO2UuYXNjcmlwdHR1cm5lZD01OTQ7ZS5hc21hbGxoaXJhZ2FuYT0xMjM1MztlLmFzbWFsbGthdGFrYW5hPTEyNDQ5O2UuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODM7ZS5hc3Rlcmlzaz00MjtlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDU7ZS5hc3Rlcmlza2FyYWJpYz0xNjQ1O2UuYXN0ZXJpc2ttYXRoPTg3Mjc7ZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MDtlLmFzdGVyaXNrc21hbGw9NjUxMjE7ZS5hc3RlcmlzbT04MjU4O2UuYXN1cGVyaW9yPTYzMjA5O2UuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxO2UuYXQ9NjQ7ZS5hdGlsZGU9MjI3O2UuYXRtb25vc3BhY2U9NjUzMTI7ZS5hdHNtYWxsPTY1MTMxO2UuYXR1cm5lZD01OTI7ZS5hdWJlbmdhbGk9MjQ1MjtlLmF1Ym9wb21vZm89MTI1NzY7ZS5hdWRldmE9MjMyNDtlLmF1Z3VqYXJhdGk9MjcwODtlLmF1Z3VybXVraGk9MjU4MDtlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOTtlLmF1bWF0cmFndXJtdWtoaT0yNjM2O2UuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDg7ZS5hdXZvd2Vsc2lnbmRldmE9MjM4MDtlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NDtlLmF2YWdyYWhhZGV2YT0yMzY1O2UuYXliYXJtZW5pYW49MTM3NztlLmF5aW49MTUwNjtlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODg7ZS5heWluaGVicmV3PTE1MDY7ZS5iPTk4O2UuYmFiZW5nYWxpPTI0NzY7ZS5iYWNrc2xhc2g9OTI7ZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDA7ZS5iYWRldmE9MjM0ODtlLmJhZ3VqYXJhdGk9MjczMjtlLmJhZ3VybXVraGk9MjYwNDtlLmJhaGlyYWdhbmE9MTI0MDA7ZS5iYWh0dGhhaT0zNjQ3O2UuYmFrYXRha2FuYT0xMjQ5NjtlLmJhcj0xMjQ7ZS5iYXJtb25vc3BhY2U9NjUzNzI7ZS5iYm9wb21vZm89MTI1NDk7ZS5iY2lyY2xlPTk0MjU7ZS5iZG90YWNjZW50PTc2ODM7ZS5iZG90YmVsb3c9NzY4NTtlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzY7ZS5iZWNhdXNlPTg3NTc7ZS5iZWN5cmlsbGljPTEwNzM7ZS5iZWhhcmFiaWM9MTU3NjtlLmJlaGZpbmFsYXJhYmljPTY1MTY4O2UuYmVoaW5pdGlhbGFyYWJpYz02NTE2OTtlLmJlaGlyYWdhbmE9MTI0MDk7ZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzA7ZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MTtlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMDtlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMTtlLmJla2F0YWthbmE9MTI1MDU7ZS5iZW5hcm1lbmlhbj0xMzc4O2UuYmV0PTE0ODk7ZS5iZXRhPTk0NjtlLmJldGFzeW1ib2xncmVlaz05NzY7ZS5iZXRkYWdlc2g9NjQzMDU7ZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDU7ZS5iZXRoZWJyZXc9MTQ4OTtlLmJldHJhZmVoZWJyZXc9NjQzMzI7ZS5iaGFiZW5nYWxpPTI0Nzc7ZS5iaGFkZXZhPTIzNDk7ZS5iaGFndWphcmF0aT0yNzMzO2UuYmhhZ3VybXVraGk9MjYwNTtlLmJob29rPTU5NTtlLmJpaGlyYWdhbmE9MTI0MDM7ZS5iaWthdGFrYW5hPTEyNDk5O2UuYmlsYWJpYWxjbGljaz02NjQ7ZS5iaW5kaWd1cm11a2hpPTI1NjI7ZS5iaXJ1c3F1YXJlPTEzMTA1O2UuYmxhY2tjaXJjbGU9OTY3OTtlLmJsYWNrZGlhbW9uZD05NjcwO2UuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwO2UuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2Njg7ZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODM7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDU7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NDtlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OTtlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTg7ZS5ibGFja3JlY3RhbmdsZT05NjQ0O2UuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4O2UuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NDtlLmJsYWNrc21hbGxzcXVhcmU9OTY0MjtlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NztlLmJsYWNrc3F1YXJlPTk2MzI7ZS5ibGFja3N0YXI9OTczMztlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMDtlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDE7ZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTI7ZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwO2UuYmxhbms9OTI1MTtlLmJsaW5lYmVsb3c9NzY4NztlLmJsb2NrPTk2MDg7ZS5ibW9ub3NwYWNlPTY1MzQ2O2UuYm9iYWltYWl0aGFpPTM2MTA7ZS5ib2hpcmFnYW5hPTEyNDEyO2UuYm9rYXRha2FuYT0xMjUwODtlLmJwYXJlbj05MzczO2UuYnFzcXVhcmU9MTMyNTE7ZS5icmFjZWV4PTYzNzMyO2UuYnJhY2VsZWZ0PTEyMztlLmJyYWNlbGVmdGJ0PTYzNzMxO2UuYnJhY2VsZWZ0bWlkPTYzNzMwO2UuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxO2UuYnJhY2VsZWZ0c21hbGw9NjUxMTU7ZS5icmFjZWxlZnR0cD02MzcyOTtlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5O2UuYnJhY2VyaWdodD0xMjU7ZS5icmFjZXJpZ2h0YnQ9NjM3NDI7ZS5icmFjZXJpZ2h0bWlkPTYzNzQxO2UuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MztlLmJyYWNlcmlnaHRzbWFsbD02NTExNjtlLmJyYWNlcmlnaHR0cD02Mzc0MDtlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MDtlLmJyYWNrZXRsZWZ0PTkxO2UuYnJhY2tldGxlZnRidD02MzcyODtlLmJyYWNrZXRsZWZ0ZXg9NjM3Mjc7ZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOTtlLmJyYWNrZXRsZWZ0dHA9NjM3MjY7ZS5icmFja2V0cmlnaHQ9OTM7ZS5icmFja2V0cmlnaHRidD02MzczOTtlLmJyYWNrZXRyaWdodGV4PTYzNzM4O2UuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxO2UuYnJhY2tldHJpZ2h0dHA9NjM3Mzc7ZS5icmV2ZT03Mjg7ZS5icmV2ZWJlbG93Y21iPTgxNDtlLmJyZXZlY21iPTc3NDtlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTU7ZS5icmV2ZWludmVydGVkY21iPTc4NTtlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1O2UuYnJpZGdlYmVsb3djbWI9ODEwO2UuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjY7ZS5icm9rZW5iYXI9MTY2O2UuYnN0cm9rZT0zODQ7ZS5ic3VwZXJpb3I9NjMyMTA7ZS5idG9wYmFyPTM4NztlLmJ1aGlyYWdhbmE9MTI0MDY7ZS5idWthdGFrYW5hPTEyNTAyO2UuYnVsbGV0PTgyMjY7ZS5idWxsZXRpbnZlcnNlPTk2ODg7ZS5idWxsZXRvcGVyYXRvcj04NzI5O2UuYnVsbHNleWU9OTY3ODtlLmM9OTk7ZS5jYWFybWVuaWFuPTEzOTA7ZS5jYWJlbmdhbGk9MjQ1ODtlLmNhY3V0ZT0yNjM7ZS5jYWRldmE9MjMzMDtlLmNhZ3VqYXJhdGk9MjcxNDtlLmNhZ3VybXVraGk9MjU4NjtlLmNhbHNxdWFyZT0xMzE5MjtlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzO2UuY2FuZHJhYmluZHVjbWI9Nzg0O2UuY2FuZHJhYmluZHVkZXZhPTIzMDU7ZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODk7ZS5jYXBzbG9jaz04NjgyO2UuY2FyZW9mPTg0NTM7ZS5jYXJvbj03MTE7ZS5jYXJvbmJlbG93Y21iPTgxMjtlLmNhcm9uY21iPTc4MDtlLmNhcnJpYWdlcmV0dXJuPTg2Mjk7ZS5jYm9wb21vZm89MTI1Njg7ZS5jY2Fyb249MjY5O2UuY2NlZGlsbGE9MjMxO2UuY2NlZGlsbGFhY3V0ZT03Njg5O2UuY2NpcmNsZT05NDI2O2UuY2NpcmN1bWZsZXg9MjY1O2UuY2N1cmw9NTk3O2UuY2RvdD0yNjc7ZS5jZG90YWNjZW50PTI2NztlLmNkc3F1YXJlPTEzMjUzO2UuY2VkaWxsYT0xODQ7ZS5jZWRpbGxhY21iPTgwNztlLmNlbnQ9MTYyO2UuY2VudGlncmFkZT04NDUxO2UuY2VudGluZmVyaW9yPTYzMTk5O2UuY2VudG1vbm9zcGFjZT02NTUwNDtlLmNlbnRvbGRzdHlsZT02MzM5NDtlLmNlbnRzdXBlcmlvcj02MzIwMDtlLmNoYWFybWVuaWFuPTE0MDE7ZS5jaGFiZW5nYWxpPTI0NTk7ZS5jaGFkZXZhPTIzMzE7ZS5jaGFndWphcmF0aT0yNzE1O2UuY2hhZ3VybXVraGk9MjU4NztlLmNoYm9wb21vZm89MTI1NjQ7ZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzO2UuY2hlY2ttYXJrPTEwMDAzO2UuY2hlY3lyaWxsaWM9MTA5NTtlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTU7ZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3O2UuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5O2UuY2hlaGFybWVuaWFuPTEzOTU7ZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyODtlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOTtlLmNoaT05Njc7ZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOTtlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjM7ZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1O2UuY2hpZXVjaGtvcmVhbj0xMjYxODtlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOTtlLmNob2NoYW5ndGhhaT0zNTk0O2UuY2hvY2hhbnRoYWk9MzU5MjtlLmNob2NoaW5ndGhhaT0zNTkzO2UuY2hvY2hvZXRoYWk9MzU5NjtlLmNob29rPTM5MjtlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxODtlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyO2UuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQ7ZS5jaWV1Y2tvcmVhbj0xMjYxNjtlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDg7ZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyODtlLmNpcmNsZT05Njc1O2UuY2lyY2xlY29weXJ0PTE2OTtlLmNpcmNsZW11bHRpcGx5PTg4NTU7ZS5jaXJjbGVvdD04ODU3O2UuY2lyY2xlcGx1cz04ODUzO2UuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MjtlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODA7ZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MTtlLmNpcmN1bWZsZXg9NzEwO2UuY2lyY3VtZmxleGJlbG93Y21iPTgxMztlLmNpcmN1bWZsZXhjbWI9NzcwO2UuY2xlYXI9ODk5OTtlLmNsaWNrYWx2ZW9sYXI9NDUwO2UuY2xpY2tkZW50YWw9NDQ4O2UuY2xpY2tsYXRlcmFsPTQ0OTtlLmNsaWNrcmV0cm9mbGV4PTQ1MTtlLmNsdWI9OTgyNztlLmNsdWJzdWl0YmxhY2s9OTgyNztlLmNsdWJzdWl0d2hpdGU9OTgzMTtlLmNtY3ViZWRzcXVhcmU9MTMyMjA7ZS5jbW9ub3NwYWNlPTY1MzQ3O2UuY21zcXVhcmVkc3F1YXJlPTEzMjE2O2UuY29hcm1lbmlhbj0xNDA5O2UuY29sb249NTg7ZS5jb2xvbm1vbmV0YXJ5PTgzNTM7ZS5jb2xvbm1vbm9zcGFjZT02NTMwNjtlLmNvbG9uc2lnbj04MzUzO2UuY29sb25zbWFsbD02NTEwOTtlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxO2UuY29sb250cmlhbmd1bGFybW9kPTcyMDtlLmNvbW1hPTQ0O2UuY29tbWFhYm92ZWNtYj03ODc7ZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5O2UuY29tbWFhY2NlbnQ9NjMxNzE7ZS5jb21tYWFyYWJpYz0xNTQ4O2UuY29tbWFhcm1lbmlhbj0xMzczO2UuY29tbWFpbmZlcmlvcj02MzIwMTtlLmNvbW1hbW9ub3NwYWNlPTY1MjkyO2UuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4ODtlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxO2UuY29tbWFzbWFsbD02NTEwNDtlLmNvbW1hc3VwZXJpb3I9NjMyMDI7ZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NjtlLmNvbW1hdHVybmVkbW9kPTY5OTtlLmNvbXBhc3M9OTc4ODtlLmNvbmdydWVudD04NzczO2UuY29udG91cmludGVncmFsPTg3NTA7ZS5jb250cm9sPTg5NjM7ZS5jb250cm9sQUNLPTY7ZS5jb250cm9sQkVMPTc7ZS5jb250cm9sQlM9ODtlLmNvbnRyb2xDQU49MjQ7ZS5jb250cm9sQ1I9MTM7ZS5jb250cm9sREMxPTE3O2UuY29udHJvbERDMj0xODtlLmNvbnRyb2xEQzM9MTk7ZS5jb250cm9sREM0PTIwO2UuY29udHJvbERFTD0xMjc7ZS5jb250cm9sRExFPTE2O2UuY29udHJvbEVNPTI1O2UuY29udHJvbEVOUT01O2UuY29udHJvbEVPVD00O2UuY29udHJvbEVTQz0yNztlLmNvbnRyb2xFVEI9MjM7ZS5jb250cm9sRVRYPTM7ZS5jb250cm9sRkY9MTI7ZS5jb250cm9sRlM9Mjg7ZS5jb250cm9sR1M9Mjk7ZS5jb250cm9sSFQ9OTtlLmNvbnRyb2xMRj0xMDtlLmNvbnRyb2xOQUs9MjE7ZS5jb250cm9sTlVMTD0wO2UuY29udHJvbFJTPTMwO2UuY29udHJvbFNJPTE1O2UuY29udHJvbFNPPTE0O2UuY29udHJvbFNPVD0yO2UuY29udHJvbFNUWD0xO2UuY29udHJvbFNVQj0yNjtlLmNvbnRyb2xTWU49MjI7ZS5jb250cm9sVVM9MzE7ZS5jb250cm9sVlQ9MTE7ZS5jb3B5cmlnaHQ9MTY5O2UuY29weXJpZ2h0c2Fucz02MzcyMTtlLmNvcHlyaWdodHNlcmlmPTYzMTkzO2UuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDA7ZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3ODtlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODk7ZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDE7ZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzk7ZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MDtlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzO2UuY29zcXVhcmU9MTMyNTU7ZS5jb3Zlcmtnc3F1YXJlPTEzMjU0O2UuY3BhcmVuPTkzNzQ7ZS5jcnV6ZWlybz04MzU0O2UuY3N0cmV0Y2hlZD02NjM7ZS5jdXJseWFuZD04OTExO2UuY3VybHlvcj04OTEwO2UuY3VycmVuY3k9MTY0O2UuY3lyQnJldmU9NjMxODU7ZS5jeXJGbGV4PTYzMTg2O2UuY3lyYnJldmU9NjMxODg7ZS5jeXJmbGV4PTYzMTg5O2UuZD0xMDA7ZS5kYWFybWVuaWFuPTEzODA7ZS5kYWJlbmdhbGk9MjQ3MDtlLmRhZGFyYWJpYz0xNTkwO2UuZGFkZXZhPTIzNDI7ZS5kYWRmaW5hbGFyYWJpYz02NTIxNDtlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTU7ZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTY7ZS5kYWdlc2g9MTQ2ODtlLmRhZ2VzaGhlYnJldz0xNDY4O2UuZGFnZ2VyPTgyMjQ7ZS5kYWdnZXJkYmw9ODIyNTtlLmRhZ3VqYXJhdGk9MjcyNjtlLmRhZ3VybXVraGk9MjU5ODtlLmRhaGlyYWdhbmE9MTIzODQ7ZS5kYWthdGFrYW5hPTEyNDgwO2UuZGFsYXJhYmljPTE1ODM7ZS5kYWxldD0xNDkxO2UuZGFsZXRkYWdlc2g9NjQzMDc7ZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNztlLmRhbGV0aGVicmV3PTE0OTE7ZS5kYWxmaW5hbGFyYWJpYz02NTE5NDtlLmRhbW1hYXJhYmljPTE2MTU7ZS5kYW1tYWxvd2FyYWJpYz0xNjE1O2UuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMjtlLmRhbW1hdGFuYXJhYmljPTE2MTI7ZS5kYW5kYT0yNDA0O2UuZGFyZ2FoZWJyZXc9MTQ0NztlLmRhcmdhbGVmdGhlYnJldz0xNDQ3O2UuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTc7ZS5kYmxHcmF2ZT02MzE4NztlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTg7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODU7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODY7ZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTE7ZS5kYmxhcnJvd2xlZnQ9ODY2MDtlLmRibGFycm93cmlnaHQ9ODY1ODtlLmRibGRhbmRhPTI0MDU7ZS5kYmxncmF2ZT02MzE5MDtlLmRibGdyYXZlY21iPTc4MztlLmRibGludGVncmFsPTg3NDg7ZS5kYmxsb3dsaW5lPTgyMTU7ZS5kYmxsb3dsaW5lY21iPTgxOTtlLmRibG92ZXJsaW5lY21iPTgzMTtlLmRibHByaW1lbW9kPTY5ODtlLmRibHZlcnRpY2FsYmFyPTgyMTQ7ZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODI7ZS5kYm9wb21vZm89MTI1NTM7ZS5kYnNxdWFyZT0xMzI1NjtlLmRjYXJvbj0yNzE7ZS5kY2VkaWxsYT03Njk3O2UuZGNpcmNsZT05NDI3O2UuZGNpcmN1bWZsZXhiZWxvdz03Njk5O2UuZGNyb2F0PTI3MztlLmRkYWJlbmdhbGk9MjQ2NTtlLmRkYWRldmE9MjMzNztlLmRkYWd1amFyYXRpPTI3MjE7ZS5kZGFndXJtdWtoaT0yNTkzO2UuZGRhbGFyYWJpYz0xNjcyO2UuZGRhbGZpbmFsYXJhYmljPTY0MzkzO2UuZGRkaGFkZXZhPTIzOTY7ZS5kZGhhYmVuZ2FsaT0yNDY2O2UuZGRoYWRldmE9MjMzODtlLmRkaGFndWphcmF0aT0yNzIyO2UuZGRoYWd1cm11a2hpPTI1OTQ7ZS5kZG90YWNjZW50PTc2OTE7ZS5kZG90YmVsb3c9NzY5MztlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MztlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDM7ZS5kZWN5cmlsbGljPTEwNzY7ZS5kZWdyZWU9MTc2O2UuZGVoaWhlYnJldz0xNDUzO2UuZGVoaXJhZ2FuYT0xMjM5MTtlLmRlaWNvcHRpYz0xMDA3O2UuZGVrYXRha2FuYT0xMjQ4NztlLmRlbGV0ZWxlZnQ9OTAwMztlLmRlbGV0ZXJpZ2h0PTg5OTg7ZS5kZWx0YT05NDg7ZS5kZWx0YXR1cm5lZD0zOTc7ZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyO2UuZGV6aD02NzY7ZS5kaGFiZW5nYWxpPTI0NzE7ZS5kaGFkZXZhPTIzNDM7ZS5kaGFndWphcmF0aT0yNzI3O2UuZGhhZ3VybXVraGk9MjU5OTtlLmRob29rPTU5OTtlLmRpYWx5dGlrYXRvbm9zPTkwMTtlLmRpYWx5dGlrYXRvbm9zY21iPTgzNjtlLmRpYW1vbmQ9OTgzMDtlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNjtlLmRpZXJlc2lzPTE2ODtlLmRpZXJlc2lzYWN1dGU9NjMxOTE7ZS5kaWVyZXNpc2JlbG93Y21iPTgwNDtlLmRpZXJlc2lzY21iPTc3NjtlLmRpZXJlc2lzZ3JhdmU9NjMxOTI7ZS5kaWVyZXNpc3Rvbm9zPTkwMTtlLmRpaGlyYWdhbmE9MTIzODY7ZS5kaWthdGFrYW5hPTEyNDgyO2UuZGl0dG9tYXJrPTEyMjkxO2UuZGl2aWRlPTI0NztlLmRpdmlkZXM9ODczOTtlLmRpdmlzaW9uc2xhc2g9ODcyNTtlLmRqZWN5cmlsbGljPTExMDY7ZS5ka3NoYWRlPTk2MTk7ZS5kbGluZWJlbG93PTc2OTU7ZS5kbHNxdWFyZT0xMzIwNztlLmRtYWNyb249MjczO2UuZG1vbm9zcGFjZT02NTM0ODtlLmRuYmxvY2s9OTYwNDtlLmRvY2hhZGF0aGFpPTM1OTg7ZS5kb2Rla3RoYWk9MzYwNDtlLmRvaGlyYWdhbmE9MTIzOTM7ZS5kb2thdGFrYW5hPTEyNDg5O2UuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDM7ZS5kb2xsYXJtb25vc3BhY2U9NjUyODQ7ZS5kb2xsYXJvbGRzdHlsZT02MzI2ODtlLmRvbGxhcnNtYWxsPTY1MTI5O2UuZG9sbGFyc3VwZXJpb3I9NjMyMDQ7ZS5kb25nPTgzNjM7ZS5kb3J1c3F1YXJlPTEzMDk0O2UuZG90YWNjZW50PTcyOTtlLmRvdGFjY2VudGNtYj03NzU7ZS5kb3RiZWxvd2NtYj04MDM7ZS5kb3RiZWxvd2NvbWI9ODAzO2UuZG90a2F0YWthbmE9MTI1Mzk7ZS5kb3RsZXNzaT0zMDU7ZS5kb3RsZXNzaj02MzE2NjtlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQ7ZS5kb3RtYXRoPTg5MDE7ZS5kb3R0ZWRjaXJjbGU9OTY3NjtlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3O2UuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODc7ZS5kb3dudGFja2JlbG93Y21iPTc5ODtlLmRvd250YWNrbW9kPTcyNTtlLmRwYXJlbj05Mzc1O2UuZHN1cGVyaW9yPTYzMjExO2UuZHRhaWw9NTk4O2UuZHRvcGJhcj0zOTY7ZS5kdWhpcmFnYW5hPTEyMzg5O2UuZHVrYXRha2FuYT0xMjQ4NTtlLmR6PTQ5OTtlLmR6YWx0b25lPTY3NTtlLmR6Y2Fyb249NDU0O2UuZHpjdXJsPTY3NztlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDk7ZS5kemVjeXJpbGxpYz0xMTA5O2UuZHpoZWN5cmlsbGljPTExMTk7ZS5lPTEwMTtlLmVhY3V0ZT0yMzM7ZS5lYXJ0aD05NzkzO2UuZWJlbmdhbGk9MjQ0NztlLmVib3BvbW9mbz0xMjU3MjtlLmVicmV2ZT0yNzc7ZS5lY2FuZHJhZGV2YT0yMzE3O2UuZWNhbmRyYWd1amFyYXRpPTI3MDE7ZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczO2UuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTc7ZS5lY2Fyb249MjgzO2UuZWNlZGlsbGFicmV2ZT03NzA5O2UuZWNoYXJtZW5pYW49MTM4MTtlLmVjaHlpd25hcm1lbmlhbj0xNDE1O2UuZWNpcmNsZT05NDI4O2UuZWNpcmN1bWZsZXg9MjM0O2UuZWNpcmN1bWZsZXhhY3V0ZT03ODcxO2UuZWNpcmN1bWZsZXhiZWxvdz03NzA1O2UuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5O2UuZWNpcmN1bWZsZXhncmF2ZT03ODczO2UuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NTtlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NztlLmVjeXJpbGxpYz0xMTA4O2UuZWRibGdyYXZlPTUxNztlLmVkZXZhPTIzMTk7ZS5lZGllcmVzaXM9MjM1O2UuZWRvdD0yNzk7ZS5lZG90YWNjZW50PTI3OTtlLmVkb3RiZWxvdz03ODY1O2UuZWVndXJtdWtoaT0yNTc1O2UuZWVtYXRyYWd1cm11a2hpPTI2MzE7ZS5lZmN5cmlsbGljPTEwOTI7ZS5lZ3JhdmU9MjMyO2UuZWd1amFyYXRpPTI3MDM7ZS5laGFybWVuaWFuPTEzODM7ZS5laGJvcG9tb2ZvPTEyNTczO2UuZWhpcmFnYW5hPTEyMzYwO2UuZWhvb2thYm92ZT03ODY3O2UuZWlib3BvbW9mbz0xMjU3NTtlLmVpZ2h0PTU2O2UuZWlnaHRhcmFiaWM9MTY0MDtlLmVpZ2h0YmVuZ2FsaT0yNTQyO2UuZWlnaHRjaXJjbGU9OTMxOTtlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOTtlLmVpZ2h0ZGV2YT0yNDE0O2UuZWlnaHRlZW5jaXJjbGU9OTMyOTtlLmVpZ2h0ZWVucGFyZW49OTM0OTtlLmVpZ2h0ZWVucGVyaW9kPTkzNjk7ZS5laWdodGd1amFyYXRpPTI3OTg7ZS5laWdodGd1cm11a2hpPTI2NzA7ZS5laWdodGhhY2thcmFiaWM9MTY0MDtlLmVpZ2h0aGFuZ3pob3U9MTIzMjg7ZS5laWdodGhub3RlYmVhbWVkPTk4MzU7ZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4Mzk7ZS5laWdodGluZmVyaW9yPTgzMjg7ZS5laWdodG1vbm9zcGFjZT02NTMwNDtlLmVpZ2h0b2xkc3R5bGU9NjMyODg7ZS5laWdodHBhcmVuPTkzMzk7ZS5laWdodHBlcmlvZD05MzU5O2UuZWlnaHRwZXJzaWFuPTE3ODQ7ZS5laWdodHJvbWFuPTg1Njc7ZS5laWdodHN1cGVyaW9yPTgzMTI7ZS5laWdodHRoYWk9MzY3MjtlLmVpbnZlcnRlZGJyZXZlPTUxOTtlLmVpb3RpZmllZGN5cmlsbGljPTExMjU7ZS5la2F0YWthbmE9MTI0NTY7ZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTY7ZS5la29ua2FyZ3VybXVraGk9MjY3NjtlLmVrb3JlYW49MTI2Mjg7ZS5lbGN5cmlsbGljPTEwODM7ZS5lbGVtZW50PTg3MTI7ZS5lbGV2ZW5jaXJjbGU9OTMyMjtlLmVsZXZlbnBhcmVuPTkzNDI7ZS5lbGV2ZW5wZXJpb2Q9OTM2MjtlLmVsZXZlbnJvbWFuPTg1NzA7ZS5lbGxpcHNpcz04MjMwO2UuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyO2UuZW1hY3Jvbj0yNzU7ZS5lbWFjcm9uYWN1dGU9NzcwMztlLmVtYWNyb25ncmF2ZT03NzAxO2UuZW1jeXJpbGxpYz0xMDg0O2UuZW1kYXNoPTgyMTI7ZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MztlLmVtb25vc3BhY2U9NjUzNDk7ZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxO2UuZW1wdHlzZXQ9ODcwOTtlLmVuYm9wb21vZm89MTI1Nzk7ZS5lbmN5cmlsbGljPTEwODU7ZS5lbmRhc2g9ODIxMTtlLmVuZGFzaHZlcnRpY2FsPTY1MDc0O2UuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3O2UuZW5nPTMzMTtlLmVuZ2JvcG9tb2ZvPTEyNTgxO2UuZW5naGVjeXJpbGxpYz0xMTg5O2UuZW5ob29rY3lyaWxsaWM9MTIyNDtlLmVuc3BhY2U9ODE5NDtlLmVvZ29uZWs9MjgxO2UuZW9rb3JlYW49MTI2Mjc7ZS5lb3Blbj02MDM7ZS5lb3BlbmNsb3NlZD02NjY7ZS5lb3BlbnJldmVyc2VkPTYwNDtlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2O2UuZW9wZW5yZXZlcnNlZGhvb2s9NjA1O2UuZXBhcmVuPTkzNzY7ZS5lcHNpbG9uPTk0OTtlLmVwc2lsb250b25vcz05NDE7ZS5lcXVhbD02MTtlLmVxdWFsbW9ub3NwYWNlPTY1MzA5O2UuZXF1YWxzbWFsbD02NTEyNjtlLmVxdWFsc3VwZXJpb3I9ODMxNjtlLmVxdWl2YWxlbmNlPTg4MDE7ZS5lcmJvcG9tb2ZvPTEyNTgyO2UuZXJjeXJpbGxpYz0xMDg4O2UuZXJldmVyc2VkPTYwMDtlLmVyZXZlcnNlZGN5cmlsbGljPTExMDE7ZS5lc2N5cmlsbGljPTEwODk7ZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTU7ZS5lc2g9NjQzO2UuZXNoY3VybD02NDY7ZS5lc2hvcnRkZXZhPTIzMTg7ZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQ7ZS5lc2hyZXZlcnNlZGxvb3A9NDI2O2UuZXNoc3F1YXRyZXZlcnNlZD02NDU7ZS5lc21hbGxoaXJhZ2FuYT0xMjM1OTtlLmVzbWFsbGthdGFrYW5hPTEyNDU1O2UuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODY7ZS5lc3RpbWF0ZWQ9ODQ5NDtlLmVzdXBlcmlvcj02MzIxMjtlLmV0YT05NTE7ZS5ldGFybWVuaWFuPTEzODQ7ZS5ldGF0b25vcz05NDI7ZS5ldGg9MjQwO2UuZXRpbGRlPTc4Njk7ZS5ldGlsZGViZWxvdz03NzA3O2UuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjU7ZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjU7ZS5ldG5haHRhaGVicmV3PTE0MjU7ZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1O2UuZXR1cm5lZD00Nzc7ZS5ldWtvcmVhbj0xMjY0MTtlLmV1cm89ODM2NDtlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDM7ZS5ldm93ZWxzaWduZGV2YT0yMzc1O2UuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTk7ZS5leGNsYW09MzM7ZS5leGNsYW1hcm1lbmlhbj0xMzcyO2UuZXhjbGFtZGJsPTgyNTI7ZS5leGNsYW1kb3duPTE2MTtlLmV4Y2xhbWRvd25zbWFsbD02MzM5MztlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MTtlLmV4Y2xhbXNtYWxsPTYzMjY1O2UuZXhpc3RlbnRpYWw9ODcwNztlLmV6aD02NTg7ZS5lemhjYXJvbj00OTU7ZS5lemhjdXJsPTY1OTtlLmV6aHJldmVyc2VkPTQ0MTtlLmV6aHRhaWw9NDQyO2UuZj0xMDI7ZS5mYWRldmE9MjM5ODtlLmZhZ3VybXVraGk9MjY1NDtlLmZhaHJlbmhlaXQ9ODQ1NztlLmZhdGhhYXJhYmljPTE2MTQ7ZS5mYXRoYWxvd2FyYWJpYz0xNjE0O2UuZmF0aGF0YW5hcmFiaWM9MTYxMTtlLmZib3BvbW9mbz0xMjU1MjtlLmZjaXJjbGU9OTQyOTtlLmZkb3RhY2NlbnQ9NzcxMTtlLmZlaGFyYWJpYz0xNjAxO2UuZmVoYXJtZW5pYW49MTQxNDtlLmZlaGZpbmFsYXJhYmljPTY1MjM0O2UuZmVoaW5pdGlhbGFyYWJpYz02NTIzNTtlLmZlaG1lZGlhbGFyYWJpYz02NTIzNjtlLmZlaWNvcHRpYz05OTc7ZS5mZW1hbGU9OTc5MjtlLmZmPTY0MjU2O2UuZl9mPTY0MjU2O2UuZmZpPTY0MjU5O2UuZl9mX2k9NjQyNTk7ZS5mZmw9NjQyNjA7ZS5mX2ZfbD02NDI2MDtlLmZpPTY0MjU3O2UuZl9pPTY0MjU3O2UuZmlmdGVlbmNpcmNsZT05MzI2O2UuZmlmdGVlbnBhcmVuPTkzNDY7ZS5maWZ0ZWVucGVyaW9kPTkzNjY7ZS5maWd1cmVkYXNoPTgyMTA7ZS5maWxsZWRib3g9OTYzMjtlLmZpbGxlZHJlY3Q9OTY0NDtlLmZpbmFsa2FmPTE0OTg7ZS5maW5hbGthZmRhZ2VzaD02NDMxNDtlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0O2UuZmluYWxrYWZoZWJyZXc9MTQ5ODtlLmZpbmFsbWVtPTE1MDE7ZS5maW5hbG1lbWhlYnJldz0xNTAxO2UuZmluYWxudW49MTUwMztlLmZpbmFsbnVuaGVicmV3PTE1MDM7ZS5maW5hbHBlPTE1MDc7ZS5maW5hbHBlaGVicmV3PTE1MDc7ZS5maW5hbHRzYWRpPTE1MDk7ZS5maW5hbHRzYWRpaGVicmV3PTE1MDk7ZS5maXJzdHRvbmVjaGluZXNlPTcxMztlLmZpc2hleWU9OTY3MztlLmZpdGFjeXJpbGxpYz0xMTM5O2UuZml2ZT01MztlLmZpdmVhcmFiaWM9MTYzNztlLmZpdmViZW5nYWxpPTI1Mzk7ZS5maXZlY2lyY2xlPTkzMTY7ZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNjtlLmZpdmVkZXZhPTI0MTE7ZS5maXZlZWlnaHRocz04NTQxO2UuZml2ZWd1amFyYXRpPTI3OTU7ZS5maXZlZ3VybXVraGk9MjY2NztlLmZpdmVoYWNrYXJhYmljPTE2Mzc7ZS5maXZlaGFuZ3pob3U9MTIzMjU7ZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNjtlLmZpdmVpbmZlcmlvcj04MzI1O2UuZml2ZW1vbm9zcGFjZT02NTMwMTtlLmZpdmVvbGRzdHlsZT02MzI4NTtlLmZpdmVwYXJlbj05MzM2O2UuZml2ZXBlcmlvZD05MzU2O2UuZml2ZXBlcnNpYW49MTc4MTtlLmZpdmVyb21hbj04NTY0O2UuZml2ZXN1cGVyaW9yPTgzMDk7ZS5maXZldGhhaT0zNjY5O2UuZmw9NjQyNTg7ZS5mX2w9NjQyNTg7ZS5mbG9yaW49NDAyO2UuZm1vbm9zcGFjZT02NTM1MDtlLmZtc3F1YXJlPTEzMjA5O2UuZm9mYW50aGFpPTM2MTU7ZS5mb2ZhdGhhaT0zNjEzO2UuZm9uZ21hbnRoYWk9MzY2MztlLmZvcmFsbD04NzA0O2UuZm91cj01MjtlLmZvdXJhcmFiaWM9MTYzNjtlLmZvdXJiZW5nYWxpPTI1Mzg7ZS5mb3VyY2lyY2xlPTkzMTU7ZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNTtlLmZvdXJkZXZhPTI0MTA7ZS5mb3VyZ3VqYXJhdGk9Mjc5NDtlLmZvdXJndXJtdWtoaT0yNjY2O2UuZm91cmhhY2thcmFiaWM9MTYzNjtlLmZvdXJoYW5nemhvdT0xMjMyNDtlLmZvdXJpZGVvZ3JhcGhpY3BhcmVuPTEyODM1O2UuZm91cmluZmVyaW9yPTgzMjQ7ZS5mb3VybW9ub3NwYWNlPTY1MzAwO2UuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MTtlLmZvdXJvbGRzdHlsZT02MzI4NDtlLmZvdXJwYXJlbj05MzM1O2UuZm91cnBlcmlvZD05MzU1O2UuZm91cnBlcnNpYW49MTc4MDtlLmZvdXJyb21hbj04NTYzO2UuZm91cnN1cGVyaW9yPTgzMDg7ZS5mb3VydGVlbmNpcmNsZT05MzI1O2UuZm91cnRlZW5wYXJlbj05MzQ1O2UuZm91cnRlZW5wZXJpb2Q9OTM2NTtlLmZvdXJ0aGFpPTM2Njg7ZS5mb3VydGh0b25lY2hpbmVzZT03MTU7ZS5mcGFyZW49OTM3NztlLmZyYWN0aW9uPTgyNjA7ZS5mcmFuYz04MzU1O2UuZz0xMDM7ZS5nYWJlbmdhbGk9MjQ1NTtlLmdhY3V0ZT01MDE7ZS5nYWRldmE9MjMyNztlLmdhZmFyYWJpYz0xNzExO2UuZ2FmZmluYWxhcmFiaWM9NjQ0MDM7ZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0O2UuZ2FmbWVkaWFsYXJhYmljPTY0NDA1O2UuZ2FndWphcmF0aT0yNzExO2UuZ2FndXJtdWtoaT0yNTgzO2UuZ2FoaXJhZ2FuYT0xMjM2NDtlLmdha2F0YWthbmE9MTI0NjA7ZS5nYW1tYT05NDc7ZS5nYW1tYWxhdGluc21hbGw9NjExO2UuZ2FtbWFzdXBlcmlvcj03MzY7ZS5nYW5naWFjb3B0aWM9MTAwMztlLmdib3BvbW9mbz0xMjU1NztlLmdicmV2ZT0yODc7ZS5nY2Fyb249NDg3O2UuZ2NlZGlsbGE9MjkxO2UuZ2NpcmNsZT05NDMwO2UuZ2NpcmN1bWZsZXg9Mjg1O2UuZ2NvbW1hYWNjZW50PTI5MTtlLmdkb3Q9Mjg5O2UuZ2RvdGFjY2VudD0yODk7ZS5nZWN5cmlsbGljPTEwNzU7ZS5nZWhpcmFnYW5hPTEyMzcwO2UuZ2VrYXRha2FuYT0xMjQ2NjtlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1O2UuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzY7ZS5nZXJlc2hoZWJyZXc9MTUyMztlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3O2UuZ2VybWFuZGJscz0yMjM7ZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzODtlLmdlcnNoYXlpbWhlYnJldz0xNTI0O2UuZ2V0YW1hcms9MTIzMDc7ZS5naGFiZW5nYWxpPTI0NTY7ZS5naGFkYXJtZW5pYW49MTM5NDtlLmdoYWRldmE9MjMyODtlLmdoYWd1amFyYXRpPTI3MTI7ZS5naGFndXJtdWtoaT0yNTg0O2UuZ2hhaW5hcmFiaWM9MTU5NDtlLmdoYWluZmluYWxhcmFiaWM9NjUyMzA7ZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzE7ZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMjtlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczO2UuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MTtlLmdoZXVwdHVybmN5cmlsbGljPTExNjk7ZS5naGhhZGV2YT0yMzk0O2UuZ2hoYWd1cm11a2hpPTI2NTA7ZS5naG9vaz02MDg7ZS5naHpzcXVhcmU9MTMyMDM7ZS5naWhpcmFnYW5hPTEyMzY2O2UuZ2lrYXRha2FuYT0xMjQ2MjtlLmdpbWFybWVuaWFuPTEzNzk7ZS5naW1lbD0xNDkwO2UuZ2ltZWxkYWdlc2g9NjQzMDY7ZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNjtlLmdpbWVsaGVicmV3PTE0OTA7ZS5namVjeXJpbGxpYz0xMTA3O2UuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NjtlLmdsb3R0YWxzdG9wPTY2MDtlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyO2UuZ2xvdHRhbHN0b3Btb2Q9NzA0O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjE7ZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDA7ZS5nbG90dGFsc3RvcHN0cm9rZT02NzM7ZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NDtlLmdtYWNyb249NzcxMztlLmdtb25vc3BhY2U9NjUzNTE7ZS5nb2hpcmFnYW5hPTEyMzcyO2UuZ29rYXRha2FuYT0xMjQ2ODtlLmdwYXJlbj05Mzc4O2UuZ3Bhc3F1YXJlPTEzMjI4O2UuZ3JhZGllbnQ9ODcxMTtlLmdyYXZlPTk2O2UuZ3JhdmViZWxvd2NtYj03OTA7ZS5ncmF2ZWNtYj03Njg7ZS5ncmF2ZWNvbWI9NzY4O2UuZ3JhdmVkZXZhPTIzODc7ZS5ncmF2ZWxvd21vZD03MTg7ZS5ncmF2ZW1vbm9zcGFjZT02NTM0NDtlLmdyYXZldG9uZWNtYj04MzI7ZS5ncmVhdGVyPTYyO2UuZ3JlYXRlcmVxdWFsPTg4MDU7ZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMztlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTA7ZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTk7ZS5ncmVhdGVyb3JsZXNzPTg4MjM7ZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDc7ZS5ncmVhdGVyc21hbGw9NjUxMjU7ZS5nc2NyaXB0PTYwOTtlLmdzdHJva2U9NDg1O2UuZ3VoaXJhZ2FuYT0xMjM2ODtlLmd1aWxsZW1vdGxlZnQ9MTcxO2UuZ3VpbGxlbW90cmlnaHQ9MTg3O2UuZ3VpbHNpbmdsbGVmdD04MjQ5O2UuZ3VpbHNpbmdscmlnaHQ9ODI1MDtlLmd1a2F0YWthbmE9MTI0NjQ7ZS5ndXJhbXVzcXVhcmU9MTMwODA7ZS5neXNxdWFyZT0xMzI1NztlLmg9MTA0O2UuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzO2UuaGFhbHRvbmVhcmFiaWM9MTcyOTtlLmhhYmVuZ2FsaT0yNDg5O2UuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzO2UuaGFkZXZhPTIzNjE7ZS5oYWd1amFyYXRpPTI3NDU7ZS5oYWd1cm11a2hpPTI2MTc7ZS5oYWhhcmFiaWM9MTU4MTtlLmhhaGZpbmFsYXJhYmljPTY1MTg2O2UuaGFoaW5pdGlhbGFyYWJpYz02NTE4NztlLmhhaGlyYWdhbmE9MTIzOTk7ZS5oYWhtZWRpYWxhcmFiaWM9NjUxODg7ZS5oYWl0dXNxdWFyZT0xMzA5ODtlLmhha2F0YWthbmE9MTI0OTU7ZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4O2UuaGFsYW50Z3VybXVraGk9MjYzNztlLmhhbXphYXJhYmljPTE1Njk7ZS5oYW16YWxvd2FyYWJpYz0xNTY5O2UuaGFuZ3VsZmlsbGVyPTEyNjQ0O2UuaGFyZHNpZ25jeXJpbGxpYz0xMDk4O2UuaGFycG9vbmxlZnRiYXJidXA9ODYzNjtlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwO2UuaGFzcXVhcmU9MTMyNTg7ZS5oYXRhZnBhdGFoPTE0NTg7ZS5oYXRhZnBhdGFoMTY9MTQ1ODtlLmhhdGFmcGF0YWgyMz0xNDU4O2UuaGF0YWZwYXRhaDJmPTE0NTg7ZS5oYXRhZnBhdGFoaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1ODtlLmhhdGFmcWFtYXRzPTE0NTk7ZS5oYXRhZnFhbWF0czFiPTE0NTk7ZS5oYXRhZnFhbWF0czI4PTE0NTk7ZS5oYXRhZnFhbWF0czM0PTE0NTk7ZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTk7ZS5oYXRhZnNlZ29sPTE0NTc7ZS5oYXRhZnNlZ29sMTc9MTQ1NztlLmhhdGFmc2Vnb2wyND0xNDU3O2UuaGF0YWZzZWdvbDMwPTE0NTc7ZS5oYXRhZnNlZ29saGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NztlLmhiYXI9Mjk1O2UuaGJvcG9tb2ZvPTEyNTU5O2UuaGJyZXZlYmVsb3c9NzcyMztlLmhjZWRpbGxhPTc3MjE7ZS5oY2lyY2xlPTk0MzE7ZS5oY2lyY3VtZmxleD0yOTM7ZS5oZGllcmVzaXM9NzcxOTtlLmhkb3RhY2NlbnQ9NzcxNTtlLmhkb3RiZWxvdz03NzE3O2UuaGU9MTQ5MjtlLmhlYXJ0PTk4Mjk7ZS5oZWFydHN1aXRibGFjaz05ODI5O2UuaGVhcnRzdWl0d2hpdGU9OTgyNTtlLmhlZGFnZXNoPTY0MzA4O2UuaGVkYWdlc2hoZWJyZXc9NjQzMDg7ZS5oZWhhbHRvbmVhcmFiaWM9MTcyOTtlLmhlaGFyYWJpYz0xNjA3O2UuaGVoZWJyZXc9MTQ5MjtlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzO2UuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTg7ZS5oZWhmaW5hbGFyYWJpYz02NTI1ODtlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMTtlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMDtlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQ7ZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5O2UuaGVoaXJhZ2FuYT0xMjQwODtlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNTtlLmhlaG1lZGlhbGFyYWJpYz02NTI2MDtlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OTtlLmhla2F0YWthbmE9MTI1MDQ7ZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxO2UuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwO2UuaGVuZ2hvb2s9NjE1O2UuaGVydXR1c3F1YXJlPTEzMTEzO2UuaGV0PTE0OTU7ZS5oZXRoZWJyZXc9MTQ5NTtlLmhob29rPTYxNDtlLmhob29rc3VwZXJpb3I9Njg5O2UuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzO2UuaGlldWhhcGFyZW5rb3JlYW49MTI4Mjc7ZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOTtlLmhpZXVoa29yZWFuPTEyNjIyO2UuaGlldWhwYXJlbmtvcmVhbj0xMjgxMztlLmhpaGlyYWdhbmE9MTI0MDI7ZS5oaWthdGFrYW5hPTEyNDk4O2UuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOTtlLmhpcmlxPTE0NjA7ZS5oaXJpcTE0PTE0NjA7ZS5oaXJpcTIxPTE0NjA7ZS5oaXJpcTJkPTE0NjA7ZS5oaXJpcWhlYnJldz0xNDYwO2UuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MDtlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwO2UuaGlyaXF3aWRlaGVicmV3PTE0NjA7ZS5obGluZWJlbG93PTc4MzA7ZS5obW9ub3NwYWNlPTY1MzUyO2UuaG9hcm1lbmlhbj0xMzkyO2UuaG9oaXB0aGFpPTM2Mjc7ZS5ob2hpcmFnYW5hPTEyNDExO2UuaG9rYXRha2FuYT0xMjUwNztlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjI7ZS5ob2xhbT0xNDY1O2UuaG9sYW0xOT0xNDY1O2UuaG9sYW0yNj0xNDY1O2UuaG9sYW0zMj0xNDY1O2UuaG9sYW1oZWJyZXc9MTQ2NTtlLmhvbGFtbmFycm93aGVicmV3PTE0NjU7ZS5ob2xhbXF1YXJ0ZXJoZWJyZXc9MTQ2NTtlLmhvbGFtd2lkZWhlYnJldz0xNDY1O2UuaG9ub2todWt0aGFpPTM2MzA7ZS5ob29rYWJvdmVjb21iPTc3NztlLmhvb2tjbWI9Nzc3O2UuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxO2UuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMjtlLmhvb25zcXVhcmU9MTMxMjI7ZS5ob3JpY29wdGljPTEwMDE7ZS5ob3Jpem9udGFsYmFyPTgyMTM7ZS5ob3JuY21iPTc5NTtlLmhvdHNwcmluZ3M9OTgzMjtlLmhvdXNlPTg5NjI7ZS5ocGFyZW49OTM3OTtlLmhzdXBlcmlvcj02ODg7ZS5odHVybmVkPTYxMztlLmh1aGlyYWdhbmE9MTI0MDU7ZS5odWlpdG9zcXVhcmU9MTMxMDc7ZS5odWthdGFrYW5hPTEyNTAxO2UuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMDtlLmh1bmdhcnVtbGF1dD03MzM7ZS5odW5nYXJ1bWxhdXRjbWI9Nzc5O2UuaHY9NDA1O2UuaHlwaGVuPTQ1O2UuaHlwaGVuaW5mZXJpb3I9NjMyMDU7ZS5oeXBoZW5tb25vc3BhY2U9NjUyOTM7ZS5oeXBoZW5zbWFsbD02NTEyMztlLmh5cGhlbnN1cGVyaW9yPTYzMjA2O2UuaHlwaGVudHdvPTgyMDg7ZS5pPTEwNTtlLmlhY3V0ZT0yMzc7ZS5pYWN5cmlsbGljPTExMDM7ZS5pYmVuZ2FsaT0yNDM5O2UuaWJvcG9tb2ZvPTEyNTgzO2UuaWJyZXZlPTMwMTtlLmljYXJvbj00NjQ7ZS5pY2lyY2xlPTk0MzI7ZS5pY2lyY3VtZmxleD0yMzg7ZS5pY3lyaWxsaWM9MTExMDtlLmlkYmxncmF2ZT01MjE7ZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MztlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5Mzk7ZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjM7ZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1ODtlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1O2UuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NDtlLmlkZW9ncmFwaGljY29tbWE9MTIyODk7ZS5pZGVvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MDtlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NTtlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MztlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NztlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxO2UuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTc7ZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQ7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MDtlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQ7ZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MztlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwO2UuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0O2UuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzO2UuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MjtlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NjtlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NztlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2O2UuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OTtlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NjtlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyO2UuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTI7ZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MDtlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTg7ZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4Njc7ZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3O2UuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyO2UuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2ODtlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzO2UuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjY7ZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MTtlLmlkZW9ncmFwaGljc3BhY2U9MTIyODg7ZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MztlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OTtlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OTtlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDg7ZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwO2UuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0O2UuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDU7ZS5pZGVvZ3JhcGhpY3plcm89MTIyOTU7ZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MjtlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5Mzg7ZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4O2UuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0O2UuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDA7ZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxO2UuaWRldmE9MjMxMTtlLmlkaWVyZXNpcz0yMzk7ZS5pZGllcmVzaXNhY3V0ZT03NzI3O2UuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MztlLmlkb3RiZWxvdz03ODgzO2UuaWVicmV2ZWN5cmlsbGljPTEyMzk7ZS5pZWN5cmlsbGljPTEwNzc7ZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTc7ZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMTtlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzO2UuaWV1bmdrb3JlYW49MTI2MTU7ZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3O2UuaWdyYXZlPTIzNjtlLmlndWphcmF0aT0yNjk1O2UuaWd1cm11a2hpPTI1Njc7ZS5paGlyYWdhbmE9MTIzNTY7ZS5paG9va2Fib3ZlPTc4ODE7ZS5paWJlbmdhbGk9MjQ0MDtlLmlpY3lyaWxsaWM9MTA4MDtlLmlpZGV2YT0yMzEyO2UuaWlndWphcmF0aT0yNjk2O2UuaWlndXJtdWtoaT0yNTY4O2UuaWltYXRyYWd1cm11a2hpPTI2MjQ7ZS5paW52ZXJ0ZWRicmV2ZT01MjM7ZS5paXNob3J0Y3lyaWxsaWM9MTA4MTtlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2O2UuaWl2b3dlbHNpZ25kZXZhPTIzNjg7ZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTI7ZS5paj0zMDc7ZS5pa2F0YWthbmE9MTI0NTI7ZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQ7ZS5pa29yZWFuPTEyNjQzO2UuaWxkZT03MzI7ZS5pbHV5aGVicmV3PTE0NTI7ZS5pbWFjcm9uPTI5OTtlLmltYWNyb25jeXJpbGxpYz0xMjUxO2UuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3O2UuaW1hdHJhZ3VybXVraGk9MjYyMztlLmltb25vc3BhY2U9NjUzNTM7ZS5pbmNyZW1lbnQ9ODcxMDtlLmluZmluaXR5PTg3MzQ7ZS5pbmlhcm1lbmlhbj0xMzg3O2UuaW50ZWdyYWw9ODc0NztlLmludGVncmFsYm90dG9tPTg5OTM7ZS5pbnRlZ3JhbGJ0PTg5OTM7ZS5pbnRlZ3JhbGV4PTYzNzMzO2UuaW50ZWdyYWx0b3A9ODk5MjtlLmludGVncmFsdHA9ODk5MjtlLmludGVyc2VjdGlvbj04NzQ1O2UuaW50aXNxdWFyZT0xMzA2MTtlLmludmJ1bGxldD05Njg4O2UuaW52Y2lyY2xlPTk2ODk7ZS5pbnZzbWlsZWZhY2U9OTc4NztlLmlvY3lyaWxsaWM9MTEwNTtlLmlvZ29uZWs9MzAzO2UuaW90YT05NTM7ZS5pb3RhZGllcmVzaXM9OTcwO2UuaW90YWRpZXJlc2lzdG9ub3M9OTEyO2UuaW90YWxhdGluPTYxNztlLmlvdGF0b25vcz05NDM7ZS5pcGFyZW49OTM4MDtlLmlyaWd1cm11a2hpPTI2NzQ7ZS5pc21hbGxoaXJhZ2FuYT0xMjM1NTtlLmlzbWFsbGthdGFrYW5hPTEyNDUxO2UuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQ7ZS5pc3NoYXJiZW5nYWxpPTI1NTQ7ZS5pc3Ryb2tlPTYxNjtlLmlzdXBlcmlvcj02MzIxMztlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1O2UuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDE7ZS5pdGlsZGU9Mjk3O2UuaXRpbGRlYmVsb3c9NzcyNTtlLml1Ym9wb21vZm89MTI1ODU7ZS5pdWN5cmlsbGljPTExMDI7ZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1O2UuaXZvd2Vsc2lnbmRldmE9MjM2NztlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxO2UuaXpoaXRzYWN5cmlsbGljPTExNDE7ZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzO2Uuaj0xMDY7ZS5qYWFybWVuaWFuPTEzOTM7ZS5qYWJlbmdhbGk9MjQ2MDtlLmphZGV2YT0yMzMyO2UuamFndWphcmF0aT0yNzE2O2UuamFndXJtdWtoaT0yNTg4O2UuamJvcG9tb2ZvPTEyNTYwO2UuamNhcm9uPTQ5NjtlLmpjaXJjbGU9OTQzMztlLmpjaXJjdW1mbGV4PTMwOTtlLmpjcm9zc2VkdGFpbD02Njk7ZS5qZG90bGVzc3N0cm9rZT02MDc7ZS5qZWN5cmlsbGljPTExMTI7ZS5qZWVtYXJhYmljPTE1ODA7ZS5qZWVtZmluYWxhcmFiaWM9NjUxODI7ZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MztlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQ7ZS5qZWhhcmFiaWM9MTY4ODtlLmplaGZpbmFsYXJhYmljPTY0Mzk1O2UuamhhYmVuZ2FsaT0yNDYxO2UuamhhZGV2YT0yMzMzO2UuamhhZ3VqYXJhdGk9MjcxNztlLmpoYWd1cm11a2hpPTI1ODk7ZS5qaGVoYXJtZW5pYW49MTQwMztlLmppcz0xMjI5MjtlLmptb25vc3BhY2U9NjUzNTQ7ZS5qcGFyZW49OTM4MTtlLmpzdXBlcmlvcj02OTA7ZS5rPTEwNztlLmthYmFzaGtpcmN5cmlsbGljPTExODU7ZS5rYWJlbmdhbGk9MjQ1MztlLmthY3V0ZT03NzI5O2Uua2FjeXJpbGxpYz0xMDgyO2Uua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5O2Uua2FkZXZhPTIzMjU7ZS5rYWY9MTQ5OTtlLmthZmFyYWJpYz0xNjAzO2Uua2FmZGFnZXNoPTY0MzE1O2Uua2FmZGFnZXNoaGVicmV3PTY0MzE1O2Uua2FmZmluYWxhcmFiaWM9NjUyNDI7ZS5rYWZoZWJyZXc9MTQ5OTtlLmthZmluaXRpYWxhcmFiaWM9NjUyNDM7ZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQ7ZS5rYWZyYWZlaGVicmV3PTY0MzMzO2Uua2FndWphcmF0aT0yNzA5O2Uua2FndXJtdWtoaT0yNTgxO2Uua2FoaXJhZ2FuYT0xMjM2MztlLmthaG9va2N5cmlsbGljPTEyMjA7ZS5rYWthdGFrYW5hPTEyNDU5O2Uua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5ODtlLmthcHBhPTk1NDtlLmthcHBhc3ltYm9sZ3JlZWs9MTAwODtlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTc7ZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzY7ZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0O2Uua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1O2Uua2Fyb3JpaXNxdWFyZT0xMzA2OTtlLmthc2hpZGFhdXRvYXJhYmljPTE2MDA7ZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMDtlLmthc21hbGxrYXRha2FuYT0xMjUzMztlLmthc3F1YXJlPTEzMTg4O2Uua2FzcmFhcmFiaWM9MTYxNjtlLmthc3JhdGFuYXJhYmljPTE2MTM7ZS5rYXN0cm9rZWN5cmlsbGljPTExODM7ZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyO2Uua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODE7ZS5rYm9wb21vZm89MTI1NTg7ZS5rY2Fsc3F1YXJlPTEzMTkzO2Uua2Nhcm9uPTQ4OTtlLmtjZWRpbGxhPTMxMTtlLmtjaXJjbGU9OTQzNDtlLmtjb21tYWFjY2VudD0zMTE7ZS5rZG90YmVsb3c9NzczMTtlLmtlaGFybWVuaWFuPTE0MTI7ZS5rZWhpcmFnYW5hPTEyMzY5O2Uua2VrYXRha2FuYT0xMjQ2NTtlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDE7ZS5rZW5hcm1lbmlhbj0xMzkxO2Uua2VzbWFsbGthdGFrYW5hPTEyNTM0O2Uua2dyZWVubGFuZGljPTMxMjtlLmtoYWJlbmdhbGk9MjQ1NDtlLmtoYWN5cmlsbGljPTEwOTM7ZS5raGFkZXZhPTIzMjY7ZS5raGFndWphcmF0aT0yNzEwO2Uua2hhZ3VybXVraGk9MjU4MjtlLmtoYWhhcmFiaWM9MTU4MjtlLmtoYWhmaW5hbGFyYWJpYz02NTE5MDtlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxO2Uua2hhaG1lZGlhbGFyYWJpYz02NTE5MjtlLmtoZWljb3B0aWM9OTk5O2Uua2hoYWRldmE9MjM5MztlLmtoaGFndXJtdWtoaT0yNjQ5O2Uua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjA7ZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0O2Uua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNjtlLmtoaWV1a2hrb3JlYW49MTI2MTk7ZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTA7ZS5raG9raGFpdGhhaT0zNTg2O2Uua2hva2hvbnRoYWk9MzU4OTtlLmtob2todWF0dGhhaT0zNTg3O2Uua2hva2h3YWl0aGFpPTM1ODg7ZS5raG9tdXR0aGFpPTM2NzU7ZS5raG9vaz00MDk7ZS5raG9yYWtoYW5ndGhhaT0zNTkwO2Uua2h6c3F1YXJlPTEzMjAxO2Uua2loaXJhZ2FuYT0xMjM2NTtlLmtpa2F0YWthbmE9MTI0NjE7ZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5O2Uua2lyb2d1cmFtdXNxdWFyZT0xMzA3NztlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4O2Uua2lyb3NxdWFyZT0xMzA3NjtlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTA7ZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQ7ZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTY7ZS5raXllb2trb3JlYW49MTI1OTM7ZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMDtlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2O2Uua2xpbmViZWxvdz03NzMzO2Uua2xzcXVhcmU9MTMyMDg7ZS5rbWN1YmVkc3F1YXJlPTEzMjIyO2Uua21vbm9zcGFjZT02NTM1NTtlLmttc3F1YXJlZHNxdWFyZT0xMzIxODtlLmtvaGlyYWdhbmE9MTIzNzE7ZS5rb2htc3F1YXJlPTEzMjQ4O2Uua29rYWl0aGFpPTM1ODU7ZS5rb2thdGFrYW5hPTEyNDY3O2Uua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMjtlLmtvb3Bvc3F1YXJlPTEzMDg2O2Uua29wcGFjeXJpbGxpYz0xMTUzO2Uua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5Mjc7ZS5rb3JvbmlzY21iPTgzNTtlLmtwYXJlbj05MzgyO2Uua3Bhc3F1YXJlPTEzMjI2O2Uua3NpY3lyaWxsaWM9MTEzNTtlLmt0c3F1YXJlPTEzMjYzO2Uua3R1cm5lZD02NzA7ZS5rdWhpcmFnYW5hPTEyMzY3O2Uua3VrYXRha2FuYT0xMjQ2MztlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDA7ZS5rdnNxdWFyZT0xMzI0MDtlLmt3c3F1YXJlPTEzMjQ2O2UubD0xMDg7ZS5sYWJlbmdhbGk9MjQ4MjtlLmxhY3V0ZT0zMTQ7ZS5sYWRldmE9MjM1NDtlLmxhZ3VqYXJhdGk9MjczODtlLmxhZ3VybXVraGk9MjYxMDtlLmxha2toYW5neWFvdGhhaT0zNjUzO2UubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2O2UubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MjtlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzE7ZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0O2UubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MztlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NTtlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzA7ZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5O2UubGFtYXJhYmljPTE2MDQ7ZS5sYW1iZGE9OTU1O2UubGFtYmRhc3Ryb2tlPTQxMTtlLmxhbWVkPTE1MDA7ZS5sYW1lZGRhZ2VzaD02NDMxNjtlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2O2UubGFtZWRoZWJyZXc9MTUwMDtlLmxhbWZpbmFsYXJhYmljPTY1MjQ2O2UubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNDtlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDc7ZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMztlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1O2UubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTA7ZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDg7ZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNDtlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2O2UubGFyZ2VjaXJjbGU9OTcxMTtlLmxiYXI9NDEwO2UubGJlbHQ9NjIwO2UubGJvcG9tb2ZvPTEyNTU2O2UubGNhcm9uPTMxODtlLmxjZWRpbGxhPTMxNjtlLmxjaXJjbGU9OTQzNTtlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MTtlLmxjb21tYWFjY2VudD0zMTY7ZS5sZG90PTMyMDtlLmxkb3RhY2NlbnQ9MzIwO2UubGRvdGJlbG93PTc3MzU7ZS5sZG90YmVsb3dtYWNyb249NzczNztlLmxlZnRhbmdsZWFib3ZlY21iPTc5NDtlLmxlZnR0YWNrYmVsb3djbWI9NzkyO2UubGVzcz02MDtlLmxlc3NlcXVhbD04ODA0O2UubGVzc2VxdWFsb3JncmVhdGVyPTg5MjI7ZS5sZXNzbW9ub3NwYWNlPTY1MzA4O2UubGVzc29yZXF1aXZhbGVudD04ODE4O2UubGVzc29yZ3JlYXRlcj04ODIyO2UubGVzc292ZXJlcXVhbD04ODA2O2UubGVzc3NtYWxsPTY1MTI0O2UubGV6aD02MjI7ZS5sZmJsb2NrPTk2MTI7ZS5saG9va3JldHJvZmxleD02MjE7ZS5saXJhPTgzNTY7ZS5saXduYXJtZW5pYW49MTM4ODtlLmxqPTQ1NztlLmxqZWN5cmlsbGljPTExMTM7ZS5sbD02MzE2ODtlLmxsYWRldmE9MjM1NTtlLmxsYWd1amFyYXRpPTI3Mzk7ZS5sbGluZWJlbG93PTc3Mzk7ZS5sbGxhZGV2YT0yMzU2O2UubGx2b2NhbGljYmVuZ2FsaT0yNTI5O2UubGx2b2NhbGljZGV2YT0yNDAxO2UubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxO2UubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzO2UubG1pZGRsZXRpbGRlPTYxOTtlLmxtb25vc3BhY2U9NjUzNTY7ZS5sbXNxdWFyZT0xMzI2NDtlLmxvY2h1bGF0aGFpPTM2Mjg7ZS5sb2dpY2FsYW5kPTg3NDM7ZS5sb2dpY2Fsbm90PTE3MjtlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2O2UubG9naWNhbG9yPTg3NDQ7ZS5sb2xpbmd0aGFpPTM2MjE7ZS5sb25ncz0zODM7ZS5sb3dsaW5lY2VudGVybGluZT02NTEwMjtlLmxvd2xpbmVjbWI9ODE4O2UubG93bGluZWRhc2hlZD02NTEwMTtlLmxvemVuZ2U9OTY3NDtlLmxwYXJlbj05MzgzO2UubHNsYXNoPTMyMjtlLmxzcXVhcmU9ODQ2NztlLmxzdXBlcmlvcj02MzIxNDtlLmx0c2hhZGU9OTYxNztlLmx1dGhhaT0zNjIyO2UubHZvY2FsaWNiZW5nYWxpPTI0NDQ7ZS5sdm9jYWxpY2RldmE9MjMxNjtlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwO2UubHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDI7ZS5seHNxdWFyZT0xMzI2NztlLm09MTA5O2UubWFiZW5nYWxpPTI0Nzg7ZS5tYWNyb249MTc1O2UubWFjcm9uYmVsb3djbWI9ODE3O2UubWFjcm9uY21iPTc3MjtlLm1hY3Jvbmxvd21vZD03MTc7ZS5tYWNyb25tb25vc3BhY2U9NjU1MDc7ZS5tYWN1dGU9Nzc0MztlLm1hZGV2YT0yMzUwO2UubWFndWphcmF0aT0yNzM0O2UubWFndXJtdWtoaT0yNjA2O2UubWFoYXBha2hoZWJyZXc9MTQ0NDtlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0O2UubWFoaXJhZ2FuYT0xMjQxNDtlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2Mzc7ZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNjtlLm1haWNoYXR0YXdhdGhhaT0zNjU5O2UubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1O2UubWFpZWtsb3dsZWZ0dGhhaT02MzYyODtlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3O2UubWFpZWt0aGFpPTM2NTY7ZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjY7ZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjA7ZS5tYWloYW5ha2F0dGhhaT0zNjMzO2UubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjU7ZS5tYWl0YWlraHV0aGFpPTM2NTU7ZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMTtlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMDtlLm1haXRob3RoYWk9MzY1NztlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2Mjk7ZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNDtlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMztlLm1haXRyaXRoYWk9MzY1ODtlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzI7ZS5tYWl5YW1va3RoYWk9MzY1NDtlLm1ha2F0YWthbmE9MTI1MTA7ZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzO2UubWFsZT05Nzk0O2UubWFuc3lvbnNxdWFyZT0xMzEyNztlLm1hcWFmaGVicmV3PTE0NzA7ZS5tYXJzPTk3OTQ7ZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NTtlLm1hc3F1YXJlPTEzMTg3O2UubWJvcG9tb2ZvPTEyNTUxO2UubWJzcXVhcmU9MTMyNjg7ZS5tY2lyY2xlPTk0MzY7ZS5tY3ViZWRzcXVhcmU9MTMyMjE7ZS5tZG90YWNjZW50PTc3NDU7ZS5tZG90YmVsb3c9Nzc0NztlLm1lZW1hcmFiaWM9MTYwNTtlLm1lZW1maW5hbGFyYWJpYz02NTI1MDtlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxO2UubWVlbW1lZGlhbGFyYWJpYz02NTI1MjtlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMTtlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQ7ZS5tZWV0b3J1c3F1YXJlPTEzMTMzO2UubWVoaXJhZ2FuYT0xMjQxNztlLm1laXppZXJhc3F1YXJlPTEzMTgyO2UubWVrYXRha2FuYT0xMjUxMztlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjY7ZS5tZW09MTUwMjtlLm1lbWRhZ2VzaD02NDMxODtlLm1lbWRhZ2VzaGhlYnJldz02NDMxODtlLm1lbWhlYnJldz0xNTAyO2UubWVuYXJtZW5pYW49MTM5NjtlLm1lcmtoYWhlYnJldz0xNDQ1O2UubWVya2hha2VmdWxhaGVicmV3PTE0NDY7ZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDY7ZS5tZXJraGFsZWZ0aGVicmV3PTE0NDU7ZS5taG9vaz02MjU7ZS5taHpzcXVhcmU9MTMyMDI7ZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MTtlLm1pZGRvdD0xODM7ZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQ7ZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxODtlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwO2UubWlldW1rb3JlYW49MTI2MDk7ZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTY7ZS5taWV1bXBhcmVua29yZWFuPTEyODA0O2UubWlldW1waWV1cGtvcmVhbj0xMjY1NDtlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NTtlLm1paGlyYWdhbmE9MTI0MTU7ZS5taWthdGFrYW5hPTEyNTExO2UubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNDtlLm1pbnVzPTg3MjI7ZS5taW51c2JlbG93Y21iPTgwMDtlLm1pbnVzY2lyY2xlPTg4NTQ7ZS5taW51c21vZD03Mjc7ZS5taW51c3BsdXM9ODcyMztlLm1pbnV0ZT04MjQyO2UubWlyaWJhYXJ1c3F1YXJlPTEzMTMwO2UubWlyaXNxdWFyZT0xMzEyOTtlLm1sb25nbGVndHVybmVkPTYyNDtlLm1sc3F1YXJlPTEzMjA2O2UubW1jdWJlZHNxdWFyZT0xMzIxOTtlLm1tb25vc3BhY2U9NjUzNTc7ZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTU7ZS5tb2hpcmFnYW5hPTEyNDE4O2UubW9obXNxdWFyZT0xMzI0OTtlLm1va2F0YWthbmE9MTI1MTQ7ZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3O2UubW9sc3F1YXJlPTEzMjcwO2UubW9tYXRoYWk9MzYxNztlLm1vdmVyc3NxdWFyZT0xMzIyMztlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQ7ZS5tcGFyZW49OTM4NDtlLm1wYXNxdWFyZT0xMzIyNztlLm1zc3F1YXJlPTEzMjM1O2UubXN1cGVyaW9yPTYzMjE1O2UubXR1cm5lZD02MjM7ZS5tdT0xODE7ZS5tdTE9MTgxO2UubXVhc3F1YXJlPTEzMTg2O2UubXVjaGdyZWF0ZXI9ODgxMTtlLm11Y2hsZXNzPTg4MTA7ZS5tdWZzcXVhcmU9MTMxOTY7ZS5tdWdyZWVrPTk1NjtlLm11Z3NxdWFyZT0xMzE5NztlLm11aGlyYWdhbmE9MTI0MTY7ZS5tdWthdGFrYW5hPTEyNTEyO2UubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNTtlLm11bHNxdWFyZT0xMzIwNTtlLm11bHRpcGx5PTIxNTtlLm11bXNxdWFyZT0xMzIxMTtlLm11bmFoaGVicmV3PTE0NDM7ZS5tdW5haGxlZnRoZWJyZXc9MTQ0MztlLm11c2ljYWxub3RlPTk4MzQ7ZS5tdXNpY2Fsbm90ZWRibD05ODM1O2UubXVzaWNmbGF0c2lnbj05ODM3O2UubXVzaWNzaGFycHNpZ249OTgzOTtlLm11c3NxdWFyZT0xMzIzNDtlLm11dnNxdWFyZT0xMzIzODtlLm11d3NxdWFyZT0xMzI0NDtlLm12bWVnYXNxdWFyZT0xMzI0MTtlLm12c3F1YXJlPTEzMjM5O2UubXdtZWdhc3F1YXJlPTEzMjQ3O2UubXdzcXVhcmU9MTMyNDU7ZS5uPTExMDtlLm5hYmVuZ2FsaT0yNDcyO2UubmFibGE9ODcxMTtlLm5hY3V0ZT0zMjQ7ZS5uYWRldmE9MjM0NDtlLm5hZ3VqYXJhdGk9MjcyODtlLm5hZ3VybXVraGk9MjYwMDtlLm5haGlyYWdhbmE9MTIzOTQ7ZS5uYWthdGFrYW5hPTEyNDkwO2UubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMztlLm5hcG9zdHJvcGhlPTMyOTtlLm5hc3F1YXJlPTEzMTg1O2UubmJvcG9tb2ZvPTEyNTU1O2UubmJzcGFjZT0xNjA7ZS5uY2Fyb249MzI4O2UubmNlZGlsbGE9MzI2O2UubmNpcmNsZT05NDM3O2UubmNpcmN1bWZsZXhiZWxvdz03NzU1O2UubmNvbW1hYWNjZW50PTMyNjtlLm5kb3RhY2NlbnQ9Nzc0OTtlLm5kb3RiZWxvdz03NzUxO2UubmVoaXJhZ2FuYT0xMjM5NztlLm5la2F0YWthbmE9MTI0OTM7ZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2O2UubmV3c2hlcWVsc2lnbj04MzYyO2UubmZzcXVhcmU9MTMxOTU7ZS5uZ2FiZW5nYWxpPTI0NTc7ZS5uZ2FkZXZhPTIzMjk7ZS5uZ2FndWphcmF0aT0yNzEzO2UubmdhZ3VybXVraGk9MjU4NTtlLm5nb25ndXRoYWk9MzU5MTtlLm5oaXJhZ2FuYT0xMjQzNTtlLm5ob29rbGVmdD02MjY7ZS5uaG9va3JldHJvZmxleD02Mjc7ZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTE7ZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNTtlLm5pZXVuY2lldWNrb3JlYW49MTI1OTc7ZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NztlLm5pZXVuaGlldWhrb3JlYW49MTI1OTg7ZS5uaWV1bmtvcmVhbj0xMjU5NjtlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0ODtlLm5pZXVucGFyZW5rb3JlYW49MTI4MDE7ZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDc7ZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NjtlLm5paGlyYWdhbmE9MTIzOTU7ZS5uaWthdGFrYW5hPTEyNDkxO2UubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNDtlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDE7ZS5uaWtoYWhpdHRoYWk9MzY2MTtlLm5pbmU9NTc7ZS5uaW5lYXJhYmljPTE2NDE7ZS5uaW5lYmVuZ2FsaT0yNTQzO2UubmluZWNpcmNsZT05MzIwO2UubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzA7ZS5uaW5lZGV2YT0yNDE1O2UubmluZWd1amFyYXRpPTI3OTk7ZS5uaW5lZ3VybXVraGk9MjY3MTtlLm5pbmVoYWNrYXJhYmljPTE2NDE7ZS5uaW5laGFuZ3pob3U9MTIzMjk7ZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MDtlLm5pbmVpbmZlcmlvcj04MzI5O2UubmluZW1vbm9zcGFjZT02NTMwNTtlLm5pbmVvbGRzdHlsZT02MzI4OTtlLm5pbmVwYXJlbj05MzQwO2UubmluZXBlcmlvZD05MzYwO2UubmluZXBlcnNpYW49MTc4NTtlLm5pbmVyb21hbj04NTY4O2UubmluZXN1cGVyaW9yPTgzMTM7ZS5uaW5ldGVlbmNpcmNsZT05MzMwO2UubmluZXRlZW5wYXJlbj05MzUwO2UubmluZXRlZW5wZXJpb2Q9OTM3MDtlLm5pbmV0aGFpPTM2NzM7ZS5uaj00NjA7ZS5uamVjeXJpbGxpYz0xMTE0O2UubmthdGFrYW5hPTEyNTMxO2UubmthdGFrYW5haGFsZndpZHRoPTY1NDM3O2UubmxlZ3JpZ2h0bG9uZz00MTQ7ZS5ubGluZWJlbG93PTc3NTM7ZS5ubW9ub3NwYWNlPTY1MzU4O2Uubm1zcXVhcmU9MTMyMTA7ZS5ubmFiZW5nYWxpPTI0Njc7ZS5ubmFkZXZhPTIzMzk7ZS5ubmFndWphcmF0aT0yNzIzO2Uubm5hZ3VybXVraGk9MjU5NTtlLm5ubmFkZXZhPTIzNDU7ZS5ub2hpcmFnYW5hPTEyMzk4O2Uubm9rYXRha2FuYT0xMjQ5NDtlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTc7ZS5ub25icmVha2luZ3NwYWNlPTE2MDtlLm5vbmVudGhhaT0zNjAzO2Uubm9udXRoYWk9MzYwOTtlLm5vb25hcmFiaWM9MTYwNjtlLm5vb25maW5hbGFyYWJpYz02NTI1NDtlLm5vb25naHVubmFhcmFiaWM9MTcyMjtlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNTtlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1O2Uubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyO2Uubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NztlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTY7ZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjU7ZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwO2Uubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MztlLm5vdGNvbnRhaW5zPTg3MTY7ZS5ub3RlbGVtZW50PTg3MTM7ZS5ub3RlbGVtZW50b2Y9ODcxMztlLm5vdGVxdWFsPTg4MDA7ZS5ub3RncmVhdGVyPTg4MTU7ZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNztlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjU7ZS5ub3RpZGVudGljYWw9ODgwMjtlLm5vdGxlc3M9ODgxNDtlLm5vdGxlc3Nub3JlcXVhbD04ODE2O2Uubm90cGFyYWxsZWw9ODc0MjtlLm5vdHByZWNlZGVzPTg4MzI7ZS5ub3RzdWJzZXQ9ODgzNjtlLm5vdHN1Y2NlZWRzPTg4MzM7ZS5ub3RzdXBlcnNldD04ODM3O2Uubm93YXJtZW5pYW49MTM5ODtlLm5wYXJlbj05Mzg1O2UubnNzcXVhcmU9MTMyMzM7ZS5uc3VwZXJpb3I9ODMxOTtlLm50aWxkZT0yNDE7ZS5udT05NTc7ZS5udWhpcmFnYW5hPTEyMzk2O2UubnVrYXRha2FuYT0xMjQ5MjtlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTU7ZS5udWt0YWJlbmdhbGk9MjQ5MjtlLm51a3RhZGV2YT0yMzY0O2UubnVrdGFndWphcmF0aT0yNzQ4O2UubnVrdGFndXJtdWtoaT0yNjIwO2UubnVtYmVyc2lnbj0zNTtlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODM7ZS5udW1iZXJzaWduc21hbGw9NjUxMTk7ZS5udW1lcmFsc2lnbmdyZWVrPTg4NDtlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODU7ZS5udW1lcm89ODQ3MDtlLm51bj0xNTA0O2UubnVuZGFnZXNoPTY0MzIwO2UubnVuZGFnZXNoaGVicmV3PTY0MzIwO2UubnVuaGVicmV3PTE1MDQ7ZS5udnNxdWFyZT0xMzIzNztlLm53c3F1YXJlPTEzMjQzO2UubnlhYmVuZ2FsaT0yNDYyO2UubnlhZGV2YT0yMzM0O2UubnlhZ3VqYXJhdGk9MjcxODtlLm55YWd1cm11a2hpPTI1OTA7ZS5vPTExMTtlLm9hY3V0ZT0yNDM7ZS5vYW5ndGhhaT0zNjI5O2Uub2JhcnJlZD02Mjk7ZS5vYmFycmVkY3lyaWxsaWM9MTI1NztlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTk7ZS5vYmVuZ2FsaT0yNDUxO2Uub2JvcG9tb2ZvPTEyNTcxO2Uub2JyZXZlPTMzNTtlLm9jYW5kcmFkZXZhPTIzMjE7ZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNTtlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzc7ZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MTtlLm9jYXJvbj00NjY7ZS5vY2lyY2xlPTk0Mzg7ZS5vY2lyY3VtZmxleD0yNDQ7ZS5vY2lyY3VtZmxleGFjdXRlPTc4ODk7ZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTc7ZS5vY2lyY3VtZmxleGdyYXZlPTc4OTE7ZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzO2Uub2NpcmN1bWZsZXh0aWxkZT03ODk1O2Uub2N5cmlsbGljPTEwODY7ZS5vZGJsYWN1dGU9MzM3O2Uub2RibGdyYXZlPTUyNTtlLm9kZXZhPTIzMjM7ZS5vZGllcmVzaXM9MjQ2O2Uub2RpZXJlc2lzY3lyaWxsaWM9MTI1NTtlLm9kb3RiZWxvdz03ODg1O2Uub2U9MzM5O2Uub2Vrb3JlYW49MTI2MzQ7ZS5vZ29uZWs9NzMxO2Uub2dvbmVrY21iPTgwODtlLm9ncmF2ZT0yNDI7ZS5vZ3VqYXJhdGk9MjcwNztlLm9oYXJtZW5pYW49MTQxMztlLm9oaXJhZ2FuYT0xMjM2MjtlLm9ob29rYWJvdmU9Nzg4NztlLm9ob3JuPTQxNztlLm9ob3JuYWN1dGU9Nzg5OTtlLm9ob3JuZG90YmVsb3c9NzkwNztlLm9ob3JuZ3JhdmU9NzkwMTtlLm9ob3JuaG9va2Fib3ZlPTc5MDM7ZS5vaG9ybnRpbGRlPTc5MDU7ZS5vaHVuZ2FydW1sYXV0PTMzNztlLm9pPTQxOTtlLm9pbnZlcnRlZGJyZXZlPTUyNztlLm9rYXRha2FuYT0xMjQ1ODtlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NztlLm9rb3JlYW49MTI2MzE7ZS5vbGVoZWJyZXc9MTQ1MTtlLm9tYWNyb249MzMzO2Uub21hY3JvbmFjdXRlPTc3NjM7ZS5vbWFjcm9uZ3JhdmU9Nzc2MTtlLm9tZGV2YT0yMzg0O2Uub21lZ2E9OTY5O2Uub21lZ2ExPTk4MjtlLm9tZWdhY3lyaWxsaWM9MTEyMTtlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxO2Uub21lZ2Fyb3VuZGN5cmlsbGljPTExNDc7ZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OTtlLm9tZWdhdG9ub3M9OTc0O2Uub21ndWphcmF0aT0yNzY4O2Uub21pY3Jvbj05NTk7ZS5vbWljcm9udG9ub3M9OTcyO2Uub21vbm9zcGFjZT02NTM1OTtlLm9uZT00OTtlLm9uZWFyYWJpYz0xNjMzO2Uub25lYmVuZ2FsaT0yNTM1O2Uub25lY2lyY2xlPTkzMTI7ZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyO2Uub25lZGV2YT0yNDA3O2Uub25lZG90ZW5sZWFkZXI9ODIyODtlLm9uZWVpZ2h0aD04NTM5O2Uub25lZml0dGVkPTYzMTk2O2Uub25lZ3VqYXJhdGk9Mjc5MTtlLm9uZWd1cm11a2hpPTI2NjM7ZS5vbmVoYWNrYXJhYmljPTE2MzM7ZS5vbmVoYWxmPTE4OTtlLm9uZWhhbmd6aG91PTEyMzIxO2Uub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMjtlLm9uZWluZmVyaW9yPTgzMjE7ZS5vbmVtb25vc3BhY2U9NjUyOTc7ZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDg7ZS5vbmVvbGRzdHlsZT02MzI4MTtlLm9uZXBhcmVuPTkzMzI7ZS5vbmVwZXJpb2Q9OTM1MjtlLm9uZXBlcnNpYW49MTc3NztlLm9uZXF1YXJ0ZXI9MTg4O2Uub25lcm9tYW49ODU2MDtlLm9uZXN1cGVyaW9yPTE4NTtlLm9uZXRoYWk9MzY2NTtlLm9uZXRoaXJkPTg1MzE7ZS5vb2dvbmVrPTQ5MTtlLm9vZ29uZWttYWNyb249NDkzO2Uub29ndXJtdWtoaT0yNTc5O2Uub29tYXRyYWd1cm11a2hpPTI2MzU7ZS5vb3Blbj01OTY7ZS5vcGFyZW49OTM4NjtlLm9wZW5idWxsZXQ9OTcwMjtlLm9wdGlvbj04OTk3O2Uub3JkZmVtaW5pbmU9MTcwO2Uub3JkbWFzY3VsaW5lPTE4NjtlLm9ydGhvZ29uYWw9ODczNTtlLm9zaG9ydGRldmE9MjMyMjtlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3ODtlLm9zbGFzaD0yNDg7ZS5vc2xhc2hhY3V0ZT01MTE7ZS5vc21hbGxoaXJhZ2FuYT0xMjM2MTtlLm9zbWFsbGthdGFrYW5hPTEyNDU3O2Uub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODc7ZS5vc3Ryb2tlYWN1dGU9NTExO2Uub3N1cGVyaW9yPTYzMjE2O2Uub3RjeXJpbGxpYz0xMTUxO2Uub3RpbGRlPTI0NTtlLm90aWxkZWFjdXRlPTc3NTc7ZS5vdGlsZGVkaWVyZXNpcz03NzU5O2Uub3Vib3BvbW9mbz0xMjU3NztlLm92ZXJsaW5lPTgyNTQ7ZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTg7ZS5vdmVybGluZWNtYj03NzM7ZS5vdmVybGluZWRhc2hlZD02NTA5NztlLm92ZXJsaW5lZGJsd2F2eT02NTEwMDtlLm92ZXJsaW5ld2F2eT02NTA5OTtlLm92ZXJzY29yZT0xNzU7ZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3O2Uub3Zvd2Vsc2lnbmRldmE9MjM3OTtlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzO2UucD0xMTI7ZS5wYWFtcHNzcXVhcmU9MTMxODQ7ZS5wYWFzZW50b3NxdWFyZT0xMzA5OTtlLnBhYmVuZ2FsaT0yNDc0O2UucGFjdXRlPTc3NjU7ZS5wYWRldmE9MjM0NjtlLnBhZ2Vkb3duPTg2NzE7ZS5wYWdldXA9ODY3MDtlLnBhZ3VqYXJhdGk9MjczMDtlLnBhZ3VybXVraGk9MjYwMjtlLnBhaGlyYWdhbmE9MTI0MDE7ZS5wYWl5YW5ub2l0aGFpPTM2MzE7ZS5wYWthdGFrYW5hPTEyNDk3O2UucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2O2UucGFsb2Noa2FjeXJpbGxpYz0xMjE2O2UucGFuc2lvc2tvcmVhbj0xMjY3MTtlLnBhcmFncmFwaD0xODI7ZS5wYXJhbGxlbD04NzQxO2UucGFyZW5sZWZ0PTQwO2UucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwO2UucGFyZW5sZWZ0YnQ9NjM3MjU7ZS5wYXJlbmxlZnRleD02MzcyNDtlLnBhcmVubGVmdGluZmVyaW9yPTgzMzM7ZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODg7ZS5wYXJlbmxlZnRzbWFsbD02NTExMztlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTc7ZS5wYXJlbmxlZnR0cD02MzcyMztlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3O2UucGFyZW5yaWdodD00MTtlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzE7ZS5wYXJlbnJpZ2h0YnQ9NjM3MzY7ZS5wYXJlbnJpZ2h0ZXg9NjM3MzU7ZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNDtlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODk7ZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQ7ZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxODtlLnBhcmVucmlnaHR0cD02MzczNDtlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3ODtlLnBhcnRpYWxkaWZmPTg3MDY7ZS5wYXNlcWhlYnJldz0xNDcyO2UucGFzaHRhaGVicmV3PTE0MzM7ZS5wYXNxdWFyZT0xMzIyNTtlLnBhdGFoPTE0NjM7ZS5wYXRhaDExPTE0NjM7ZS5wYXRhaDFkPTE0NjM7ZS5wYXRhaDJhPTE0NjM7ZS5wYXRhaGhlYnJldz0xNDYzO2UucGF0YWhuYXJyb3doZWJyZXc9MTQ2MztlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzO2UucGF0YWh3aWRlaGVicmV3PTE0NjM7ZS5wYXplcmhlYnJldz0xNDQxO2UucGJvcG9tb2ZvPTEyNTUwO2UucGNpcmNsZT05NDM5O2UucGRvdGFjY2VudD03NzY3O2UucGU9MTUwODtlLnBlY3lyaWxsaWM9MTA4NztlLnBlZGFnZXNoPTY0MzI0O2UucGVkYWdlc2hoZWJyZXc9NjQzMjQ7ZS5wZWV6aXNxdWFyZT0xMzExNTtlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjM7ZS5wZWhhcmFiaWM9MTY2MjtlLnBlaGFybWVuaWFuPTE0MDI7ZS5wZWhlYnJldz0xNTA4O2UucGVoZmluYWxhcmFiaWM9NjQzNDM7ZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0O2UucGVoaXJhZ2FuYT0xMjQxMDtlLnBlaG1lZGlhbGFyYWJpYz02NDM0NTtlLnBla2F0YWthbmE9MTI1MDY7ZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxO2UucGVyYWZlaGVicmV3PTY0MzM0O2UucGVyY2VudD0zNztlLnBlcmNlbnRhcmFiaWM9MTY0MjtlLnBlcmNlbnRtb25vc3BhY2U9NjUyODU7ZS5wZXJjZW50c21hbGw9NjUxMzA7ZS5wZXJpb2Q9NDY7ZS5wZXJpb2Rhcm1lbmlhbj0xNDE3O2UucGVyaW9kY2VudGVyZWQ9MTgzO2UucGVyaW9kaGFsZndpZHRoPTY1Mzc3O2UucGVyaW9kaW5mZXJpb3I9NjMyMDc7ZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQ7ZS5wZXJpb2RzbWFsbD02NTEwNjtlLnBlcmlvZHN1cGVyaW9yPTYzMjA4O2UucGVyaXNwb21lbmlncmVla2NtYj04MzQ7ZS5wZXJwZW5kaWN1bGFyPTg4Njk7ZS5wZXJ0aG91c2FuZD04MjQwO2UucGVzZXRhPTgzNTk7ZS5wZnNxdWFyZT0xMzE5NDtlLnBoYWJlbmdhbGk9MjQ3NTtlLnBoYWRldmE9MjM0NztlLnBoYWd1amFyYXRpPTI3MzE7ZS5waGFndXJtdWtoaT0yNjAzO2UucGhpPTk2NjtlLnBoaTE9OTgxO2UucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjI7ZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2O2UucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwODtlLnBoaWV1cGhrb3JlYW49MTI2MjE7ZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTI7ZS5waGlsYXRpbj02MzI7ZS5waGludGh1dGhhaT0zNjQyO2UucGhpc3ltYm9sZ3JlZWs9OTgxO2UucGhvb2s9NDIxO2UucGhvcGhhbnRoYWk9MzYxNDtlLnBob3BodW5ndGhhaT0zNjEyO2UucGhvc2FtcGhhb3RoYWk9MzYxNjtlLnBpPTk2MDtlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNTtlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5O2UucGlldXBjaWV1Y2tvcmVhbj0xMjY2MjtlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxO2UucGlldXBraXllb2trb3JlYW49MTI2NTg7ZS5waWV1cGtvcmVhbj0xMjYxMDtlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDU7ZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjA7ZS5waWV1cHNpb3Nrb3JlYW49MTI2MTI7ZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjE7ZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjM7ZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OTtlLnBpaGlyYWdhbmE9MTI0MDQ7ZS5waWthdGFrYW5hPTEyNTAwO2UucGlzeW1ib2xncmVlaz05ODI7ZS5waXdyYXJtZW5pYW49MTQxMTtlLnBsYW5ja292ZXIycGk9ODQ2MztlLnBsYW5ja292ZXIycGkxPTg0NjM7ZS5wbHVzPTQzO2UucGx1c2JlbG93Y21iPTc5OTtlLnBsdXNjaXJjbGU9ODg1MztlLnBsdXNtaW51cz0xNzc7ZS5wbHVzbW9kPTcyNjtlLnBsdXNtb25vc3BhY2U9NjUyOTE7ZS5wbHVzc21hbGw9NjUxMjI7ZS5wbHVzc3VwZXJpb3I9ODMxNDtlLnBtb25vc3BhY2U9NjUzNjA7ZS5wbXNxdWFyZT0xMzI3MjtlLnBvaGlyYWdhbmE9MTI0MTM7ZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTk7ZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTY7ZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4O2UucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NztlLnBva2F0YWthbmE9MTI1MDk7ZS5wb3BsYXRoYWk9MzYxMTtlLnBvc3RhbG1hcms9MTIzMDY7ZS5wb3N0YWxtYXJrZmFjZT0xMjMyMDtlLnBwYXJlbj05Mzg3O2UucHJlY2VkZXM9ODgyNjtlLnByZXNjcmlwdGlvbj04NDc4O2UucHJpbWVtb2Q9Njk3O2UucHJpbWVyZXZlcnNlZD04MjQ1O2UucHJvZHVjdD04NzE5O2UucHJvamVjdGl2ZT04OTY1O2UucHJvbG9uZ2Vka2FuYT0xMjU0MDtlLnByb3BlbGxvcj04OTg0O2UucHJvcGVyc3Vic2V0PTg4MzQ7ZS5wcm9wZXJzdXBlcnNldD04ODM1O2UucHJvcG9ydGlvbj04NzU5O2UucHJvcG9ydGlvbmFsPTg3MzM7ZS5wc2k9OTY4O2UucHNpY3lyaWxsaWM9MTEzNztlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4O2UucHNzcXVhcmU9MTMyMzI7ZS5wdWhpcmFnYW5hPTEyNDA3O2UucHVrYXRha2FuYT0xMjUwMztlLnB2c3F1YXJlPTEzMjM2O2UucHdzcXVhcmU9MTMyNDI7ZS5xPTExMztlLnFhZGV2YT0yMzkyO2UucWFkbWFoZWJyZXc9MTQ0ODtlLnFhZmFyYWJpYz0xNjAyO2UucWFmZmluYWxhcmFiaWM9NjUyMzg7ZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5O2UucWFmbWVkaWFsYXJhYmljPTY1MjQwO2UucWFtYXRzPTE0NjQ7ZS5xYW1hdHMxMD0xNDY0O2UucWFtYXRzMWE9MTQ2NDtlLnFhbWF0czFjPTE0NjQ7ZS5xYW1hdHMyNz0xNDY0O2UucWFtYXRzMjk9MTQ2NDtlLnFhbWF0czMzPTE0NjQ7ZS5xYW1hdHNkZT0xNDY0O2UucWFtYXRzaGVicmV3PTE0NjQ7ZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NDtlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NDtlLnFhcm5leXBhcmFoZWJyZXc9MTQzOTtlLnFib3BvbW9mbz0xMjU2MTtlLnFjaXJjbGU9OTQ0MDtlLnFob29rPTY3MjtlLnFtb25vc3BhY2U9NjUzNjE7ZS5xb2Y9MTUxMTtlLnFvZmRhZ2VzaD02NDMyNztlLnFvZmRhZ2VzaGhlYnJldz02NDMyNztlLnFvZmhlYnJldz0xNTExO2UucXBhcmVuPTkzODg7ZS5xdWFydGVybm90ZT05ODMzO2UucXVidXRzPTE0Njc7ZS5xdWJ1dHMxOD0xNDY3O2UucXVidXRzMjU9MTQ2NztlLnF1YnV0czMxPTE0Njc7ZS5xdWJ1dHNoZWJyZXc9MTQ2NztlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3O2UucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3O2UucXVidXRzd2lkZWhlYnJldz0xNDY3O2UucXVlc3Rpb249NjM7ZS5xdWVzdGlvbmFyYWJpYz0xNTY3O2UucXVlc3Rpb25hcm1lbmlhbj0xMzc0O2UucXVlc3Rpb25kb3duPTE5MTtlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzO2UucXVlc3Rpb25ncmVlaz04OTQ7ZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMTtlLnF1ZXN0aW9uc21hbGw9NjMyOTU7ZS5xdW90ZWRibD0zNDtlLnF1b3RlZGJsYmFzZT04MjIyO2UucXVvdGVkYmxsZWZ0PTgyMjA7ZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MjtlLnF1b3RlZGJscHJpbWU9MTIzMTg7ZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTc7ZS5xdW90ZWRibHJpZ2h0PTgyMjE7ZS5xdW90ZWxlZnQ9ODIxNjtlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTk7ZS5xdW90ZXJldmVyc2VkPTgyMTk7ZS5xdW90ZXJpZ2h0PTgyMTc7ZS5xdW90ZXJpZ2h0bj0zMjk7ZS5xdW90ZXNpbmdsYmFzZT04MjE4O2UucXVvdGVzaW5nbGU9Mzk7ZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NztlLnI9MTE0O2UucmFhcm1lbmlhbj0xNDA0O2UucmFiZW5nYWxpPTI0ODA7ZS5yYWN1dGU9MzQxO2UucmFkZXZhPTIzNTI7ZS5yYWRpY2FsPTg3MzA7ZS5yYWRpY2FsZXg9NjM3MTc7ZS5yYWRvdmVyc3NxdWFyZT0xMzIzMDtlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMTtlLnJhZHNxdWFyZT0xMzIyOTtlLnJhZmU9MTQ3MTtlLnJhZmVoZWJyZXc9MTQ3MTtlLnJhZ3VqYXJhdGk9MjczNjtlLnJhZ3VybXVraGk9MjYwODtlLnJhaGlyYWdhbmE9MTI0MjU7ZS5yYWthdGFrYW5hPTEyNTIxO2UucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMTtlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NTtlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQ7ZS5yYW1zaG9ybj02MTI7ZS5yYXRpbz04NzU4O2UucmJvcG9tb2ZvPTEyNTY2O2UucmNhcm9uPTM0NTtlLnJjZWRpbGxhPTM0MztlLnJjaXJjbGU9OTQ0MTtlLnJjb21tYWFjY2VudD0zNDM7ZS5yZGJsZ3JhdmU9NTI5O2UucmRvdGFjY2VudD03NzY5O2UucmRvdGJlbG93PTc3NzE7ZS5yZG90YmVsb3dtYWNyb249Nzc3MztlLnJlZmVyZW5jZW1hcms9ODI1MTtlLnJlZmxleHN1YnNldD04ODM4O2UucmVmbGV4c3VwZXJzZXQ9ODgzOTtlLnJlZ2lzdGVyZWQ9MTc0O2UucmVnaXN0ZXJzYW5zPTYzNzIwO2UucmVnaXN0ZXJzZXJpZj02MzE5NDtlLnJlaGFyYWJpYz0xNTg1O2UucmVoYXJtZW5pYW49MTQwODtlLnJlaGZpbmFsYXJhYmljPTY1MTk4O2UucmVoaXJhZ2FuYT0xMjQyODtlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0O2UucmVzaD0xNTEyO2UucmVzaGRhZ2VzaGhlYnJldz02NDMyODtlLnJlc2hoZWJyZXc9MTUxMjtlLnJldmVyc2VkdGlsZGU9ODc2NTtlLnJldmlhaGVicmV3PTE0MzE7ZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMTtlLnJldmxvZ2ljYWxub3Q9ODk3NjtlLnJmaXNoaG9vaz02Mzg7ZS5yZmlzaGhvb2tyZXZlcnNlZD02Mzk7ZS5yaGFiZW5nYWxpPTI1MjU7ZS5yaGFkZXZhPTIzOTc7ZS5yaG89OTYxO2Uucmhvb2s9NjM3O2Uucmhvb2t0dXJuZWQ9NjM1O2Uucmhvb2t0dXJuZWRzdXBlcmlvcj02OTM7ZS5yaG9zeW1ib2xncmVlaz0xMDA5O2UucmhvdGljaG9va21vZD03MzQ7ZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTM7ZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNztlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5O2UucmlldWxoaWV1aGtvcmVhbj0xMjYwODtlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyO2UucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5O2UucmlldWxrb3JlYW49MTI2MDE7ZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzO2UucmlldWxwYW5zaW9za29yZWFuPTEyNjUyO2UucmlldWxwYXJlbmtvcmVhbj0xMjgwMztlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNztlLnJpZXVscGlldXBrb3JlYW49MTI2MDQ7ZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MTtlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNTtlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNjtlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwO2UucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MztlLnJpZ2h0YW5nbGU9ODczNTtlLnJpZ2h0dGFja2JlbG93Y21iPTc5MztlLnJpZ2h0dHJpYW5nbGU9ODg5NTtlLnJpaGlyYWdhbmE9MTI0MjY7ZS5yaWthdGFrYW5hPTEyNTIyO2UucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMjtlLnJpbmc9NzMwO2UucmluZ2JlbG93Y21iPTgwNTtlLnJpbmdjbWI9Nzc4O2UucmluZ2hhbGZsZWZ0PTcwMztlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjk7ZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTY7ZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjM7ZS5yaW5naGFsZnJpZ2h0PTcwMjtlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjU7ZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyO2UucmludmVydGVkYnJldmU9NTMxO2Uucml0dG9ydXNxdWFyZT0xMzEzNztlLnJsaW5lYmVsb3c9Nzc3NTtlLnJsb25nbGVnPTYzNjtlLnJsb25nbGVndHVybmVkPTYzNDtlLnJtb25vc3BhY2U9NjUzNjI7ZS5yb2hpcmFnYW5hPTEyNDI5O2Uucm9rYXRha2FuYT0xMjUyNTtlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzU7ZS5yb3J1YXRoYWk9MzYxOTtlLnJwYXJlbj05Mzg5O2UucnJhYmVuZ2FsaT0yNTI0O2UucnJhZGV2YT0yMzUzO2UucnJhZ3VybXVraGk9MjY1MjtlLnJyZWhhcmFiaWM9MTY4MTtlLnJyZWhmaW5hbGFyYWJpYz02NDM5NztlLnJydm9jYWxpY2JlbmdhbGk9MjUyODtlLnJydm9jYWxpY2RldmE9MjQwMDtlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQ7ZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDA7ZS5ycnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzI7ZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2O2UucnN1cGVyaW9yPTYzMjE3O2UucnRibG9jaz05NjE2O2UucnR1cm5lZD02MzM7ZS5ydHVybmVkc3VwZXJpb3I9NjkyO2UucnVoaXJhZ2FuYT0xMjQyNztlLnJ1a2F0YWthbmE9MTI1MjM7ZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzO2UucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2O2UucnVwZWVzaWduYmVuZ2FsaT0yNTQ3O2UucnVwaWFoPTYzMTk3O2UucnV0aGFpPTM2MjA7ZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MztlLnJ2b2NhbGljZGV2YT0yMzE1O2UucnZvY2FsaWNndWphcmF0aT0yNjk5O2UucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MTtlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NTtlLnM9MTE1O2Uuc2FiZW5nYWxpPTI0ODg7ZS5zYWN1dGU9MzQ3O2Uuc2FjdXRlZG90YWNjZW50PTc3ODE7ZS5zYWRhcmFiaWM9MTU4OTtlLnNhZGV2YT0yMzYwO2Uuc2FkZmluYWxhcmFiaWM9NjUyMTA7ZS5zYWRpbml0aWFsYXJhYmljPTY1MjExO2Uuc2FkbWVkaWFsYXJhYmljPTY1MjEyO2Uuc2FndWphcmF0aT0yNzQ0O2Uuc2FndXJtdWtoaT0yNjE2O2Uuc2FoaXJhZ2FuYT0xMjM3MztlLnNha2F0YWthbmE9MTI0Njk7ZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzO2Uuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxODtlLnNhbWVraD0xNTA1O2Uuc2FtZWtoZGFnZXNoPTY0MzIxO2Uuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxO2Uuc2FtZWtoaGVicmV3PTE1MDU7ZS5zYXJhYWF0aGFpPTM2MzQ7ZS5zYXJhYWV0aGFpPTM2NDk7ZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MjtlLnNhcmFhaW1haW11YW50aGFpPTM2NTE7ZS5zYXJhYW10aGFpPTM2MzU7ZS5zYXJhYXRoYWk9MzYzMjtlLnNhcmFldGhhaT0zNjQ4O2Uuc2FyYWlpbGVmdHRoYWk9NjM2MjI7ZS5zYXJhaWl0aGFpPTM2Mzc7ZS5zYXJhaWxlZnR0aGFpPTYzNjIxO2Uuc2FyYWl0aGFpPTM2MzY7ZS5zYXJhb3RoYWk9MzY1MDtlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNDtlLnNhcmF1ZWV0aGFpPTM2Mzk7ZS5zYXJhdWVsZWZ0dGhhaT02MzYyMztlLnNhcmF1ZXRoYWk9MzYzODtlLnNhcmF1dGhhaT0zNjQwO2Uuc2FyYXV1dGhhaT0zNjQxO2Uuc2JvcG9tb2ZvPTEyNTY5O2Uuc2Nhcm9uPTM1MztlLnNjYXJvbmRvdGFjY2VudD03NzgzO2Uuc2NlZGlsbGE9MzUxO2Uuc2Nod2E9NjAxO2Uuc2Nod2FjeXJpbGxpYz0xMjQxO2Uuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDM7ZS5zY2h3YWhvb2s9NjAyO2Uuc2NpcmNsZT05NDQyO2Uuc2NpcmN1bWZsZXg9MzQ5O2Uuc2NvbW1hYWNjZW50PTUzNztlLnNkb3RhY2NlbnQ9Nzc3NztlLnNkb3RiZWxvdz03Nzc5O2Uuc2RvdGJlbG93ZG90YWNjZW50PTc3ODU7ZS5zZWFndWxsYmVsb3djbWI9ODI4O2Uuc2Vjb25kPTgyNDM7ZS5zZWNvbmR0b25lY2hpbmVzZT03MTQ7ZS5zZWN0aW9uPTE2NztlLnNlZW5hcmFiaWM9MTU4NztlLnNlZW5maW5hbGFyYWJpYz02NTIwMjtlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzO2Uuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNDtlLnNlZ29sPTE0NjI7ZS5zZWdvbDEzPTE0NjI7ZS5zZWdvbDFmPTE0NjI7ZS5zZWdvbDJjPTE0NjI7ZS5zZWdvbGhlYnJldz0xNDYyO2Uuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MjtlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyO2Uuc2Vnb2x0YWhlYnJldz0xNDI2O2Uuc2Vnb2x3aWRlaGVicmV3PTE0NjI7ZS5zZWhhcm1lbmlhbj0xNDA1O2Uuc2VoaXJhZ2FuYT0xMjM3OTtlLnNla2F0YWthbmE9MTI0NzU7ZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2O2Uuc2VtaWNvbG9uPTU5O2Uuc2VtaWNvbG9uYXJhYmljPTE1NjM7ZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDc7ZS5zZW1pY29sb25zbWFsbD02NTEwODtlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NDtlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOTtlLnNlbnRpc3F1YXJlPTEzMDkwO2Uuc2VudG9zcXVhcmU9MTMwOTE7ZS5zZXZlbj01NTtlLnNldmVuYXJhYmljPTE2Mzk7ZS5zZXZlbmJlbmdhbGk9MjU0MTtlLnNldmVuY2lyY2xlPTkzMTg7ZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjg7ZS5zZXZlbmRldmE9MjQxMztlLnNldmVuZWlnaHRocz04NTQyO2Uuc2V2ZW5ndWphcmF0aT0yNzk3O2Uuc2V2ZW5ndXJtdWtoaT0yNjY5O2Uuc2V2ZW5oYWNrYXJhYmljPTE2Mzk7ZS5zZXZlbmhhbmd6aG91PTEyMzI3O2Uuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4O2Uuc2V2ZW5pbmZlcmlvcj04MzI3O2Uuc2V2ZW5tb25vc3BhY2U9NjUzMDM7ZS5zZXZlbm9sZHN0eWxlPTYzMjg3O2Uuc2V2ZW5wYXJlbj05MzM4O2Uuc2V2ZW5wZXJpb2Q9OTM1ODtlLnNldmVucGVyc2lhbj0xNzgzO2Uuc2V2ZW5yb21hbj04NTY2O2Uuc2V2ZW5zdXBlcmlvcj04MzExO2Uuc2V2ZW50ZWVuY2lyY2xlPTkzMjg7ZS5zZXZlbnRlZW5wYXJlbj05MzQ4O2Uuc2V2ZW50ZWVucGVyaW9kPTkzNjg7ZS5zZXZlbnRoYWk9MzY3MTtlLnNmdGh5cGhlbj0xNzM7ZS5zaGFhcm1lbmlhbj0xMzk5O2Uuc2hhYmVuZ2FsaT0yNDg2O2Uuc2hhY3lyaWxsaWM9MTA5NjtlLnNoYWRkYWFyYWJpYz0xNjE3O2Uuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDk7ZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNjtlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4O2Uuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTA7ZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNztlLnNoYWRlPTk2MTg7ZS5zaGFkZWRhcms9OTYxOTtlLnNoYWRlbGlnaHQ9OTYxNztlLnNoYWRlbWVkaXVtPTk2MTg7ZS5zaGFkZXZhPTIzNTg7ZS5zaGFndWphcmF0aT0yNzQyO2Uuc2hhZ3VybXVraGk9MjYxNDtlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNztlLnNoYm9wb21vZm89MTI1NjU7ZS5zaGNoYWN5cmlsbGljPTEwOTc7ZS5zaGVlbmFyYWJpYz0xNTg4O2Uuc2hlZW5maW5hbGFyYWJpYz02NTIwNjtlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNztlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4O2Uuc2hlaWNvcHRpYz05OTU7ZS5zaGVxZWw9ODM2MjtlLnNoZXFlbGhlYnJldz04MzYyO2Uuc2hldmE9MTQ1NjtlLnNoZXZhMTE1PTE0NTY7ZS5zaGV2YTE1PTE0NTY7ZS5zaGV2YTIyPTE0NTY7ZS5zaGV2YTJlPTE0NTY7ZS5zaGV2YWhlYnJldz0xNDU2O2Uuc2hldmFuYXJyb3doZWJyZXc9MTQ1NjtlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2O2Uuc2hldmF3aWRlaGVicmV3PTE0NTY7ZS5zaGhhY3lyaWxsaWM9MTIxMTtlLnNoaW1hY29wdGljPTEwMDU7ZS5zaGluPTE1MTM7ZS5zaGluZGFnZXNoPTY0MzI5O2Uuc2hpbmRhZ2VzaGhlYnJldz02NDMyOTtlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwO2Uuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDA7ZS5zaGluZGFnZXNoc2luZG90PTY0MzAxO2Uuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMTtlLnNoaW5kb3RoZWJyZXc9MTQ3MztlLnNoaW5oZWJyZXc9MTUxMztlLnNoaW5zaGluZG90PTY0Mjk4O2Uuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTg7ZS5zaGluc2luZG90PTY0Mjk5O2Uuc2hpbnNpbmRvdGhlYnJldz02NDI5OTtlLnNob29rPTY0MjtlLnNpZ21hPTk2MztlLnNpZ21hMT05NjI7ZS5zaWdtYWZpbmFsPTk2MjtlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMDtlLnNpaGlyYWdhbmE9MTIzNzU7ZS5zaWthdGFrYW5hPTEyNDcxO2Uuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNDtlLnNpbHVxaGVicmV3PTE0Njk7ZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OTtlLnNpbWlsYXI9ODc2NDtlLnNpbmRvdGhlYnJldz0xNDc0O2Uuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTY7ZS5zaW9zYXBhcmVua29yZWFuPTEyODIwO2Uuc2lvc2NpZXVja29yZWFuPTEyNjcwO2Uuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMjtlLnNpb3NraXllb2trb3JlYW49MTI2NjY7ZS5zaW9za29yZWFuPTEyNjEzO2Uuc2lvc25pZXVua29yZWFuPTEyNjY3O2Uuc2lvc3BhcmVua29yZWFuPTEyODA2O2Uuc2lvc3BpZXVwa29yZWFuPTEyNjY5O2Uuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2ODtlLnNpeD01NDtlLnNpeGFyYWJpYz0xNjM4O2Uuc2l4YmVuZ2FsaT0yNTQwO2Uuc2l4Y2lyY2xlPTkzMTc7ZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3O2Uuc2l4ZGV2YT0yNDEyO2Uuc2l4Z3VqYXJhdGk9Mjc5NjtlLnNpeGd1cm11a2hpPTI2Njg7ZS5zaXhoYWNrYXJhYmljPTE2Mzg7ZS5zaXhoYW5nemhvdT0xMjMyNjtlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4Mzc7ZS5zaXhpbmZlcmlvcj04MzI2O2Uuc2l4bW9ub3NwYWNlPTY1MzAyO2Uuc2l4b2xkc3R5bGU9NjMyODY7ZS5zaXhwYXJlbj05MzM3O2Uuc2l4cGVyaW9kPTkzNTc7ZS5zaXhwZXJzaWFuPTE3ODI7ZS5zaXhyb21hbj04NTY1O2Uuc2l4c3VwZXJpb3I9ODMxMDtlLnNpeHRlZW5jaXJjbGU9OTMyNztlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzO2Uuc2l4dGVlbnBhcmVuPTkzNDc7ZS5zaXh0ZWVucGVyaW9kPTkzNjc7ZS5zaXh0aGFpPTM2NzA7ZS5zbGFzaD00NztlLnNsYXNobW9ub3NwYWNlPTY1Mjk1O2Uuc2xvbmc9MzgzO2Uuc2xvbmdkb3RhY2NlbnQ9NzgzNTtlLnNtaWxlZmFjZT05Nzg2O2Uuc21vbm9zcGFjZT02NTM2MztlLnNvZnBhc3VxaGVicmV3PTE0NzU7ZS5zb2Z0aHlwaGVuPTE3MztlLnNvZnRzaWduY3lyaWxsaWM9MTEwMDtlLnNvaGlyYWdhbmE9MTIzODE7ZS5zb2thdGFrYW5hPTEyNDc3O2Uuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNztlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQ7ZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMztlLnNvcnVzaXRoYWk9MzYyNTtlLnNvc2FsYXRoYWk9MzYyNDtlLnNvc290aGFpPTM1OTU7ZS5zb3N1YXRoYWk9MzYyNjtlLnNwYWNlPTMyO2Uuc3BhY2VoYWNrYXJhYmljPTMyO2Uuc3BhZGU9OTgyNDtlLnNwYWRlc3VpdGJsYWNrPTk4MjQ7ZS5zcGFkZXN1aXR3aGl0ZT05ODI4O2Uuc3BhcmVuPTkzOTA7ZS5zcXVhcmViZWxvd2NtYj04Mjc7ZS5zcXVhcmVjYz0xMzI1MjtlLnNxdWFyZWNtPTEzMjEzO2Uuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxO2Uuc3F1YXJlaG9yaXpvbnRhbGZpbGw9OTYzNjtlLnNxdWFyZWtnPTEzMTk5O2Uuc3F1YXJla209MTMyMTQ7ZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjI7ZS5zcXVhcmVsbj0xMzI2NTtlLnNxdWFyZWxvZz0xMzI2NjtlLnNxdWFyZW1nPTEzMTk4O2Uuc3F1YXJlbWlsPTEzMjY5O2Uuc3F1YXJlbW09MTMyMTI7ZS5zcXVhcmVtc3F1YXJlZD0xMzIxNztlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4O2Uuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5O2Uuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwO2Uuc3F1YXJldmVydGljYWxmaWxsPTk2Mzc7ZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzU7ZS5zcnNxdWFyZT0xMzI3NTtlLnNzYWJlbmdhbGk9MjQ4NztlLnNzYWRldmE9MjM1OTtlLnNzYWd1amFyYXRpPTI3NDM7ZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3O2Uuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NztlLnNzYW5naWV1bmdrb3JlYW49MTI2NzI7ZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NDtlLnNzYW5nbmlldW5rb3JlYW49MTI2NDU7ZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExO2Uuc3NhbmdzaW9za29yZWFuPTEyNjE0O2Uuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDA7ZS5zc3VwZXJpb3I9NjMyMTg7ZS5zdGVybGluZz0xNjM7ZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNTtlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMjtlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjE7ZS5zdWJzZXQ9ODgzNDtlLnN1YnNldG5vdGVxdWFsPTg4NDI7ZS5zdWJzZXRvcmVxdWFsPTg4Mzg7ZS5zdWNjZWVkcz04ODI3O2Uuc3VjaHRoYXQ9ODcxNTtlLnN1aGlyYWdhbmE9MTIzNzc7ZS5zdWthdGFrYW5hPTEyNDczO2Uuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNTtlLnN1a3VuYXJhYmljPTE2MTg7ZS5zdW1tYXRpb249ODcyMTtlLnN1bj05Nzg4O2Uuc3VwZXJzZXQ9ODgzNTtlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MztlLnN1cGVyc2V0b3JlcXVhbD04ODM5O2Uuc3ZzcXVhcmU9MTMyNzY7ZS5zeW91d2FlcmFzcXVhcmU9MTMxODA7ZS50PTExNjtlLnRhYmVuZ2FsaT0yNDY4O2UudGFja2Rvd249ODg2ODtlLnRhY2tsZWZ0PTg4Njc7ZS50YWRldmE9MjM0MDtlLnRhZ3VqYXJhdGk9MjcyNDtlLnRhZ3VybXVraGk9MjU5NjtlLnRhaGFyYWJpYz0xNTkxO2UudGFoZmluYWxhcmFiaWM9NjUyMTg7ZS50YWhpbml0aWFsYXJhYmljPTY1MjE5O2UudGFoaXJhZ2FuYT0xMjM4MztlLnRhaG1lZGlhbGFyYWJpYz02NTIyMDtlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODE7ZS50YWthdGFrYW5hPTEyNDc5O2UudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwODtlLnRhdHdlZWxhcmFiaWM9MTYwMDtlLnRhdT05NjQ7ZS50YXY9MTUxNDtlLnRhdmRhZ2VzPTY0MzMwO2UudGF2ZGFnZXNoPTY0MzMwO2UudGF2ZGFnZXNoaGVicmV3PTY0MzMwO2UudGF2aGVicmV3PTE1MTQ7ZS50YmFyPTM1OTtlLnRib3BvbW9mbz0xMjU1NDtlLnRjYXJvbj0zNTc7ZS50Y2N1cmw9NjgwO2UudGNlZGlsbGE9MzU1O2UudGNoZWhhcmFiaWM9MTY3MDtlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzk7ZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODA7ZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MTtlLnRjaXJjbGU9OTQ0MztlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MztlLnRjb21tYWFjY2VudD0zNTU7ZS50ZGllcmVzaXM9NzgzMTtlLnRkb3RhY2NlbnQ9Nzc4NztlLnRkb3RiZWxvdz03Nzg5O2UudGVjeXJpbGxpYz0xMDkwO2UudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3O2UudGVoYXJhYmljPTE1Nzg7ZS50ZWhmaW5hbGFyYWJpYz02NTE3NDtlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQ7ZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNDtlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzU7ZS50ZWhpcmFnYW5hPTEyMzkwO2UudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzM7ZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjM7ZS50ZWhtYXJidXRhYXJhYmljPTE1Nzc7ZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzI7ZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzY7ZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NjtlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNjtlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNztlLnRla2F0YWthbmE9MTI0ODY7ZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExO2UudGVsZXBob25lPTg0ODE7ZS50ZWxlcGhvbmVibGFjaz05NzQyO2UudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwO2UudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5O2UudGVuY2lyY2xlPTkzMjE7ZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxO2UudGVucGFyZW49OTM0MTtlLnRlbnBlcmlvZD05MzYxO2UudGVucm9tYW49ODU2OTtlLnRlc2g9Njc5O2UudGV0PTE0OTY7ZS50ZXRkYWdlc2g9NjQzMTI7ZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTI7ZS50ZXRoZWJyZXc9MTQ5NjtlLnRldHNlY3lyaWxsaWM9MTIwNTtlLnRldmlyaGVicmV3PTE0MzU7ZS50ZXZpcmxlZnRoZWJyZXc9MTQzNTtlLnRoYWJlbmdhbGk9MjQ2OTtlLnRoYWRldmE9MjM0MTtlLnRoYWd1amFyYXRpPTI3MjU7ZS50aGFndXJtdWtoaT0yNTk3O2UudGhhbGFyYWJpYz0xNTg0O2UudGhhbGZpbmFsYXJhYmljPTY1MTk2O2UudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MDtlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5O2UudGhhbnRoYWtoYXR0aGFpPTM2NjA7ZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2Mzg7ZS50aGVoYXJhYmljPTE1Nzk7ZS50aGVoZmluYWxhcmFiaWM9NjUxNzg7ZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OTtlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODA7ZS50aGVyZWV4aXN0cz04NzA3O2UudGhlcmVmb3JlPTg3NTY7ZS50aGV0YT05NTI7ZS50aGV0YTE9OTc3O2UudGhldGFzeW1ib2xncmVlaz05Nzc7ZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMTtlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjU7ZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3O2UudGhpZXV0aGtvcmVhbj0xMjYyMDtlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMTtlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQ7ZS50aGlydGVlbnBhcmVuPTkzNDQ7ZS50aGlydGVlbnBlcmlvZD05MzY0O2UudGhvbmFuZ21vbnRob3RoYWk9MzYwMTtlLnRob29rPTQyOTtlLnRob3BodXRoYW90aGFpPTM2MDI7ZS50aG9ybj0yNTQ7ZS50aG90aGFoYW50aGFpPTM2MDc7ZS50aG90aGFudGhhaT0zNjAwO2UudGhvdGhvbmd0aGFpPTM2MDg7ZS50aG90aHVuZ3RoYWk9MzYwNjtlLnRob3VzYW5kY3lyaWxsaWM9MTE1NDtlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0O2UudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0O2UudGhyZWU9NTE7ZS50aHJlZWFyYWJpYz0xNjM1O2UudGhyZWViZW5nYWxpPTI1Mzc7ZS50aHJlZWNpcmNsZT05MzE0O2UudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0O2UudGhyZWVkZXZhPTI0MDk7ZS50aHJlZWVpZ2h0aHM9ODU0MDtlLnRocmVlZ3VqYXJhdGk9Mjc5MztlLnRocmVlZ3VybXVraGk9MjY2NTtlLnRocmVlaGFja2FyYWJpYz0xNjM1O2UudGhyZWVoYW5nemhvdT0xMjMyMztlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNDtlLnRocmVlaW5mZXJpb3I9ODMyMztlLnRocmVlbW9ub3NwYWNlPTY1Mjk5O2UudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTA7ZS50aHJlZW9sZHN0eWxlPTYzMjgzO2UudGhyZWVwYXJlbj05MzM0O2UudGhyZWVwZXJpb2Q9OTM1NDtlLnRocmVlcGVyc2lhbj0xNzc5O2UudGhyZWVxdWFydGVycz0xOTA7ZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4O2UudGhyZWVyb21hbj04NTYyO2UudGhyZWVzdXBlcmlvcj0xNzk7ZS50aHJlZXRoYWk9MzY2NztlLnRoenNxdWFyZT0xMzIwNDtlLnRpaGlyYWdhbmE9MTIzODU7ZS50aWthdGFrYW5hPTEyNDgxO2UudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOTtlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTI7ZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTY7ZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTg7ZS50aWtldXRrb3JlYW49MTI1OTk7ZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMjtlLnRpbGRlPTczMjtlLnRpbGRlYmVsb3djbWI9ODE2O2UudGlsZGVjbWI9NzcxO2UudGlsZGVjb21iPTc3MTtlLnRpbGRlZG91YmxlY21iPTg2NDtlLnRpbGRlb3BlcmF0b3I9ODc2NDtlLnRpbGRlb3ZlcmxheWNtYj04MjA7ZS50aWxkZXZlcnRpY2FsY21iPTgzMDtlLnRpbWVzY2lyY2xlPTg4NTU7ZS50aXBlaGFoZWJyZXc9MTQzMDtlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMDtlLnRpcHBpZ3VybXVraGk9MjY3MjtlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NTtlLnRpd25hcm1lbmlhbj0xNDA3O2UudGxpbmViZWxvdz03NzkxO2UudG1vbm9zcGFjZT02NTM2NDtlLnRvYXJtZW5pYW49MTM4NTtlLnRvaGlyYWdhbmE9MTIzOTI7ZS50b2thdGFrYW5hPTEyNDg4O2UudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMjtlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxO2UudG9uZWJhcmV4dHJhbG93bW9kPTc0NTtlLnRvbmViYXJoaWdobW9kPTc0MjtlLnRvbmViYXJsb3dtb2Q9NzQ0O2UudG9uZWJhcm1pZG1vZD03NDM7ZS50b25lZml2ZT00NDU7ZS50b25lc2l4PTM4OTtlLnRvbmV0d289NDI0O2UudG9ub3M9OTAwO2UudG9uc3F1YXJlPTEzMDk1O2UudG9wYXRha3RoYWk9MzU5OTtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwODtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODE7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyO2UudG90YW90aGFpPTM2MDU7ZS50cGFsYXRhbGhvb2s9NDI3O2UudHBhcmVuPTkzOTE7ZS50cmFkZW1hcms9ODQ4MjtlLnRyYWRlbWFya3NhbnM9NjM3MjI7ZS50cmFkZW1hcmtzZXJpZj02MzE5NTtlLnRyZXRyb2ZsZXhob29rPTY0ODtlLnRyaWFnZG49OTY2MDtlLnRyaWFnbGY9OTY2ODtlLnRyaWFncnQ9OTY1ODtlLnRyaWFndXA9OTY1MDtlLnRzPTY3ODtlLnRzYWRpPTE1MTA7ZS50c2FkaWRhZ2VzaD02NDMyNjtlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2O2UudHNhZGloZWJyZXc9MTUxMDtlLnRzZWN5cmlsbGljPTEwOTQ7ZS50c2VyZT0xNDYxO2UudHNlcmUxMj0xNDYxO2UudHNlcmUxZT0xNDYxO2UudHNlcmUyYj0xNDYxO2UudHNlcmVoZWJyZXc9MTQ2MTtlLnRzZXJlbmFycm93aGVicmV3PTE0NjE7ZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MTtlLnRzZXJld2lkZWhlYnJldz0xNDYxO2UudHNoZWN5cmlsbGljPTExMTU7ZS50c3VwZXJpb3I9NjMyMTk7ZS50dGFiZW5nYWxpPTI0NjM7ZS50dGFkZXZhPTIzMzU7ZS50dGFndWphcmF0aT0yNzE5O2UudHRhZ3VybXVraGk9MjU5MTtlLnR0ZWhhcmFiaWM9MTY1NztlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OTtlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwO2UudHRlaG1lZGlhbGFyYWJpYz02NDM2MTtlLnR0aGFiZW5nYWxpPTI0NjQ7ZS50dGhhZGV2YT0yMzM2O2UudHRoYWd1amFyYXRpPTI3MjA7ZS50dGhhZ3VybXVraGk9MjU5MjtlLnR0dXJuZWQ9NjQ3O2UudHVoaXJhZ2FuYT0xMjM4ODtlLnR1a2F0YWthbmE9MTI0ODQ7ZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwO2UudHVzbWFsbGhpcmFnYW5hPTEyMzg3O2UudHVzbWFsbGthdGFrYW5hPTEyNDgzO2UudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxO2UudHdlbHZlY2lyY2xlPTkzMjM7ZS50d2VsdmVwYXJlbj05MzQzO2UudHdlbHZlcGVyaW9kPTkzNjM7ZS50d2VsdmVyb21hbj04NTcxO2UudHdlbnR5Y2lyY2xlPTkzMzE7ZS50d2VudHloYW5nemhvdT0yMTMxNjtlLnR3ZW50eXBhcmVuPTkzNTE7ZS50d2VudHlwZXJpb2Q9OTM3MTtlLnR3bz01MDtlLnR3b2FyYWJpYz0xNjM0O2UudHdvYmVuZ2FsaT0yNTM2O2UudHdvY2lyY2xlPTkzMTM7ZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzO2UudHdvZGV2YT0yNDA4O2UudHdvZG90ZW5sZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzI7ZS50d29ndWphcmF0aT0yNzkyO2UudHdvZ3VybXVraGk9MjY2NDtlLnR3b2hhY2thcmFiaWM9MTYzNDtlLnR3b2hhbmd6aG91PTEyMzIyO2UudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMztlLnR3b2luZmVyaW9yPTgzMjI7ZS50d29tb25vc3BhY2U9NjUyOTg7ZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDk7ZS50d29vbGRzdHlsZT02MzI4MjtlLnR3b3BhcmVuPTkzMzM7ZS50d29wZXJpb2Q9OTM1MztlLnR3b3BlcnNpYW49MTc3ODtlLnR3b3JvbWFuPTg1NjE7ZS50d29zdHJva2U9NDQzO2UudHdvc3VwZXJpb3I9MTc4O2UudHdvdGhhaT0zNjY2O2UudHdvdGhpcmRzPTg1MzI7ZS51PTExNztlLnVhY3V0ZT0yNTA7ZS51YmFyPTY0OTtlLnViZW5nYWxpPTI0NDE7ZS51Ym9wb21vZm89MTI1ODQ7ZS51YnJldmU9MzY1O2UudWNhcm9uPTQ2ODtlLnVjaXJjbGU9OTQ0NDtlLnVjaXJjdW1mbGV4PTI1MTtlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OTtlLnVjeXJpbGxpYz0xMDkxO2UudWRhdHRhZGV2YT0yMzg1O2UudWRibGFjdXRlPTM2OTtlLnVkYmxncmF2ZT01MzM7ZS51ZGV2YT0yMzEzO2UudWRpZXJlc2lzPTI1MjtlLnVkaWVyZXNpc2FjdXRlPTQ3MjtlLnVkaWVyZXNpc2JlbG93PTc3OTU7ZS51ZGllcmVzaXNjYXJvbj00NzQ7ZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1O2UudWRpZXJlc2lzZ3JhdmU9NDc2O2UudWRpZXJlc2lzbWFjcm9uPTQ3MDtlLnVkb3RiZWxvdz03OTA5O2UudWdyYXZlPTI0OTtlLnVndWphcmF0aT0yNjk3O2UudWd1cm11a2hpPTI1Njk7ZS51aGlyYWdhbmE9MTIzNTg7ZS51aG9va2Fib3ZlPTc5MTE7ZS51aG9ybj00MzI7ZS51aG9ybmFjdXRlPTc5MTM7ZS51aG9ybmRvdGJlbG93PTc5MjE7ZS51aG9ybmdyYXZlPTc5MTU7ZS51aG9ybmhvb2thYm92ZT03OTE3O2UudWhvcm50aWxkZT03OTE5O2UudWh1bmdhcnVtbGF1dD0zNjk7ZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NztlLnVpbnZlcnRlZGJyZXZlPTUzNTtlLnVrYXRha2FuYT0xMjQ1NDtlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NTtlLnVrY3lyaWxsaWM9MTE0NTtlLnVrb3JlYW49MTI2MzY7ZS51bWFjcm9uPTM2MztlLnVtYWNyb25jeXJpbGxpYz0xMjYzO2UudW1hY3JvbmRpZXJlc2lzPTc4MDM7ZS51bWF0cmFndXJtdWtoaT0yNjI1O2UudW1vbm9zcGFjZT02NTM2NTtlLnVuZGVyc2NvcmU9OTU7ZS51bmRlcnNjb3JlZGJsPTgyMTU7ZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzO2UudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1O2UudW5kZXJzY29yZXdhdnk9NjUxMDM7ZS51bmlvbj04NzQ2O2UudW5pdmVyc2FsPTg3MDQ7ZS51b2dvbmVrPTM3MTtlLnVwYXJlbj05MzkyO2UudXBibG9jaz05NjAwO2UudXBwZXJkb3RoZWJyZXc9MTQ3NjtlLnVwc2lsb249OTY1O2UudXBzaWxvbmRpZXJlc2lzPTk3MTtlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NDtlLnVwc2lsb25sYXRpbj02NTA7ZS51cHNpbG9udG9ub3M9OTczO2UudXB0YWNrYmVsb3djbWI9Nzk3O2UudXB0YWNrbW9kPTcyNDtlLnVyYWd1cm11a2hpPTI2NzU7ZS51cmluZz0zNjc7ZS51c2hvcnRjeXJpbGxpYz0xMTE4O2UudXNtYWxsaGlyYWdhbmE9MTIzNTc7ZS51c21hbGxrYXRha2FuYT0xMjQ1MztlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1O2UudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OTtlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDE7ZS51dGlsZGU9MzYxO2UudXRpbGRlYWN1dGU9NzgwMTtlLnV0aWxkZWJlbG93PTc3OTc7ZS51dWJlbmdhbGk9MjQ0MjtlLnV1ZGV2YT0yMzE0O2UudXVndWphcmF0aT0yNjk4O2UudXVndXJtdWtoaT0yNTcwO2UudXVtYXRyYWd1cm11a2hpPTI2MjY7ZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5ODtlLnV1dm93ZWxzaWduZGV2YT0yMzcwO2UudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0O2UudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NztlLnV2b3dlbHNpZ25kZXZhPTIzNjk7ZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MztlLnY9MTE4O2UudmFkZXZhPTIzNTc7ZS52YWd1amFyYXRpPTI3NDE7ZS52YWd1cm11a2hpPTI2MTM7ZS52YWthdGFrYW5hPTEyNTM1O2UudmF2PTE0OTM7ZS52YXZkYWdlc2g9NjQzMDk7ZS52YXZkYWdlc2g2NT02NDMwOTtlLnZhdmRhZ2VzaGhlYnJldz02NDMwOTtlLnZhdmhlYnJldz0xNDkzO2UudmF2aG9sYW09NjQzMzE7ZS52YXZob2xhbWhlYnJldz02NDMzMTtlLnZhdnZhdmhlYnJldz0xNTIwO2UudmF2eW9kaGVicmV3PTE1MjE7ZS52Y2lyY2xlPTk0NDU7ZS52ZG90YmVsb3c9NzgwNztlLnZlY3lyaWxsaWM9MTA3NDtlLnZlaGFyYWJpYz0xNzAwO2UudmVoZmluYWxhcmFiaWM9NjQzNjM7ZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0O2UudmVobWVkaWFsYXJhYmljPTY0MzY1O2UudmVrYXRha2FuYT0xMjUzNztlLnZlbnVzPTk3OTI7ZS52ZXJ0aWNhbGJhcj0xMjQ7ZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODE7ZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDk7ZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2O2UudmVydGljYWxsaW5lbW9kPTcxMjtlLnZld2FybWVuaWFuPTE0MDY7ZS52aG9vaz02NTE7ZS52aWthdGFrYW5hPTEyNTM2O2UudmlyYW1hYmVuZ2FsaT0yNTA5O2UudmlyYW1hZGV2YT0yMzgxO2UudmlyYW1hZ3VqYXJhdGk9Mjc2NTtlLnZpc2FyZ2FiZW5nYWxpPTI0MzU7ZS52aXNhcmdhZGV2YT0yMzA3O2UudmlzYXJnYWd1amFyYXRpPTI2OTE7ZS52bW9ub3NwYWNlPTY1MzY2O2Uudm9hcm1lbmlhbj0xNDAwO2Uudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDY7ZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MjtlLnZvaWNlZG1hcmtrYW5hPTEyNDQzO2Uudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzg7ZS52b2thdGFrYW5hPTEyNTM4O2UudnBhcmVuPTkzOTM7ZS52dGlsZGU9NzgwNTtlLnZ0dXJuZWQ9NjUyO2UudnVoaXJhZ2FuYT0xMjQzNjtlLnZ1a2F0YWthbmE9MTI1MzI7ZS53PTExOTtlLndhY3V0ZT03ODExO2Uud2Fla29yZWFuPTEyNjMzO2Uud2FoaXJhZ2FuYT0xMjQzMTtlLndha2F0YWthbmE9MTI1Mjc7ZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2O2Uud2Frb3JlYW49MTI2MzI7ZS53YXNtYWxsaGlyYWdhbmE9MTI0MzA7ZS53YXNtYWxsa2F0YWthbmE9MTI1MjY7ZS53YXR0b3NxdWFyZT0xMzE0MztlLndhdmVkYXNoPTEyMzE2O2Uud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NjtlLndhd2FyYWJpYz0xNjA4O2Uud2F3ZmluYWxhcmFiaWM9NjUyNjI7ZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzI7ZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTg7ZS53YnNxdWFyZT0xMzI3NztlLndjaXJjbGU9OTQ0NjtlLndjaXJjdW1mbGV4PTM3MztlLndkaWVyZXNpcz03ODEzO2Uud2RvdGFjY2VudD03ODE1O2Uud2RvdGJlbG93PTc4MTc7ZS53ZWhpcmFnYW5hPTEyNDMzO2Uud2VpZXJzdHJhc3M9ODQ3MjtlLndla2F0YWthbmE9MTI1Mjk7ZS53ZWtvcmVhbj0xMjYzODtlLndlb2tvcmVhbj0xMjYzNztlLndncmF2ZT03ODA5O2Uud2hpdGVidWxsZXQ9OTcwMjtlLndoaXRlY2lyY2xlPTk2NzU7ZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OTtlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDI7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTE7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMztlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTI7ZS53aGl0ZWRpYW1vbmQ9OTY3MTtlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyO2Uud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjE7ZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NztlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NTtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwO2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExO2Uud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3O2Uud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NTtlLndoaXRlc21hbGxzcXVhcmU9OTY0MztlLndoaXRlc21pbGluZ2ZhY2U9OTc4NjtlLndoaXRlc3F1YXJlPTk2MzM7ZS53aGl0ZXN0YXI9OTczNDtlLndoaXRldGVsZXBob25lPTk3NDM7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMjtlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMztlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MztlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTE7ZS53aWhpcmFnYW5hPTEyNDMyO2Uud2lrYXRha2FuYT0xMjUyODtlLndpa29yZWFuPTEyNjM5O2Uud21vbm9zcGFjZT02NTM2NztlLndvaGlyYWdhbmE9MTI0MzQ7ZS53b2thdGFrYW5hPTEyNTMwO2Uud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MjtlLndvbj04MzYxO2Uud29ubW9ub3NwYWNlPTY1NTEwO2Uud293YWVudGhhaT0zNjIzO2Uud3BhcmVuPTkzOTQ7ZS53cmluZz03ODMyO2Uud3N1cGVyaW9yPTY5NTtlLnd0dXJuZWQ9NjUzO2Uud3lubj00NDc7ZS54PTEyMDtlLnhhYm92ZWNtYj04Mjk7ZS54Ym9wb21vZm89MTI1NjI7ZS54Y2lyY2xlPTk0NDc7ZS54ZGllcmVzaXM9NzgyMTtlLnhkb3RhY2NlbnQ9NzgxOTtlLnhlaGFybWVuaWFuPTEzODk7ZS54aT05NTg7ZS54bW9ub3NwYWNlPTY1MzY4O2UueHBhcmVuPTkzOTU7ZS54c3VwZXJpb3I9NzM5O2UueT0xMjE7ZS55YWFkb3NxdWFyZT0xMzEzNDtlLnlhYmVuZ2FsaT0yNDc5O2UueWFjdXRlPTI1MztlLnlhZGV2YT0yMzUxO2UueWFla29yZWFuPTEyNjI2O2UueWFndWphcmF0aT0yNzM1O2UueWFndXJtdWtoaT0yNjA3O2UueWFoaXJhZ2FuYT0xMjQyMDtlLnlha2F0YWthbmE9MTI1MTY7ZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4O2UueWFrb3JlYW49MTI2MjU7ZS55YW1ha2thbnRoYWk9MzY2MjtlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOTtlLnlhc21hbGxrYXRha2FuYT0xMjUxNTtlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4ODtlLnlhdGN5cmlsbGljPTExMjM7ZS55Y2lyY2xlPTk0NDg7ZS55Y2lyY3VtZmxleD0zNzU7ZS55ZGllcmVzaXM9MjU1O2UueWRvdGFjY2VudD03ODIzO2UueWRvdGJlbG93PTc5MjU7ZS55ZWhhcmFiaWM9MTYxMDtlLnllaGJhcnJlZWFyYWJpYz0xNzQ2O2UueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzE7ZS55ZWhmaW5hbGFyYWJpYz02NTI2NjtlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NDtlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MjtlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzO2UueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NDtlLnllaGluaXRpYWxhcmFiaWM9NjUyNjc7ZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjg7ZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMztlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMDtlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MDtlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDU7ZS55ZWtvcmVhbj0xMjYzMDtlLnllbj0xNjU7ZS55ZW5tb25vc3BhY2U9NjU1MDk7ZS55ZW9rb3JlYW49MTI2Mjk7ZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3ODtlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwO2UueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwO2UueWVyaWN5cmlsbGljPTEwOTk7ZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczO2UueWVzaWV1bmdrb3JlYW49MTI2NzM7ZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzU7ZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQ7ZS55ZXRpdmhlYnJldz0xNDM0O2UueWdyYXZlPTc5MjM7ZS55aG9vaz00MzY7ZS55aG9va2Fib3ZlPTc5Mjc7ZS55aWFybWVuaWFuPTEzOTc7ZS55aWN5cmlsbGljPTExMTE7ZS55aWtvcmVhbj0xMjY0MjtlLnlpbnlhbmc9OTc3NTtlLnlpd25hcm1lbmlhbj0xNDEwO2UueW1vbm9zcGFjZT02NTM2OTtlLnlvZD0xNDk3O2UueW9kZGFnZXNoPTY0MzEzO2UueW9kZGFnZXNoaGVicmV3PTY0MzEzO2UueW9kaGVicmV3PTE0OTc7ZS55b2R5b2RoZWJyZXc9MTUyMjtlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3O2UueW9oaXJhZ2FuYT0xMjQyNDtlLnlvaWtvcmVhbj0xMjY4MTtlLnlva2F0YWthbmE9MTI1MjA7ZS55b2thdGFrYW5haGFsZndpZHRoPTY1NDMwO2UueW9rb3JlYW49MTI2MzU7ZS55b3NtYWxsaGlyYWdhbmE9MTI0MjM7ZS55b3NtYWxsa2F0YWthbmE9MTI1MTk7ZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTA7ZS55b3RncmVlaz0xMDExO2UueW95YWVrb3JlYW49MTI2ODA7ZS55b3lha29yZWFuPTEyNjc5O2UueW95YWt0aGFpPTM2MTg7ZS55b3lpbmd0aGFpPTM1OTc7ZS55cGFyZW49OTM5NjtlLnlwb2dlZ3JhbW1lbmk9ODkwO2UueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNztlLnlyPTQyMjtlLnlyaW5nPTc4MzM7ZS55c3VwZXJpb3I9Njk2O2UueXRpbGRlPTc5Mjk7ZS55dHVybmVkPTY1NDtlLnl1aGlyYWdhbmE9MTI0MjI7ZS55dWlrb3JlYW49MTI2ODQ7ZS55dWthdGFrYW5hPTEyNTE4O2UueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOTtlLnl1a29yZWFuPTEyNjQwO2UueXVzYmlnY3lyaWxsaWM9MTEzMTtlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMztlLnl1c2xpdHRsZWN5cmlsbGljPTExMjc7ZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjk7ZS55dXNtYWxsaGlyYWdhbmE9MTI0MjE7ZS55dXNtYWxsa2F0YWthbmE9MTI1MTc7ZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODk7ZS55dXlla29yZWFuPTEyNjgzO2UueXV5ZW9rb3JlYW49MTI2ODI7ZS55eWFiZW5nYWxpPTI1Mjc7ZS55eWFkZXZhPTIzOTk7ZS56PTEyMjtlLnphYXJtZW5pYW49MTM4MjtlLnphY3V0ZT0zNzg7ZS56YWRldmE9MjM5NTtlLnphZ3VybXVraGk9MjY1MTtlLnphaGFyYWJpYz0xNTkyO2UuemFoZmluYWxhcmFiaWM9NjUyMjI7ZS56YWhpbml0aWFsYXJhYmljPTY1MjIzO2UuemFoaXJhZ2FuYT0xMjM3NDtlLnphaG1lZGlhbGFyYWJpYz02NTIyNDtlLnphaW5hcmFiaWM9MTU4NjtlLnphaW5maW5hbGFyYWJpYz02NTIwMDtlLnpha2F0YWthbmE9MTI0NzA7ZS56YXFlZmdhZG9saGVicmV3PTE0Mjk7ZS56YXFlZnFhdGFuaGVicmV3PTE0Mjg7ZS56YXJxYWhlYnJldz0xNDMyO2UuemF5aW49MTQ5NDtlLnpheWluZGFnZXNoPTY0MzEwO2UuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTA7ZS56YXlpbmhlYnJldz0xNDk0O2UuemJvcG9tb2ZvPTEyNTY3O2UuemNhcm9uPTM4MjtlLnpjaXJjbGU9OTQ0OTtlLnpjaXJjdW1mbGV4PTc4MjU7ZS56Y3VybD02NTc7ZS56ZG90PTM4MDtlLnpkb3RhY2NlbnQ9MzgwO2UuemRvdGJlbG93PTc4Mjc7ZS56ZWN5cmlsbGljPTEwNzk7ZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzc7ZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NztlLnplaGlyYWdhbmE9MTIzODA7ZS56ZWthdGFrYW5hPTEyNDc2O2UuemVybz00ODtlLnplcm9hcmFiaWM9MTYzMjtlLnplcm9iZW5nYWxpPTI1MzQ7ZS56ZXJvZGV2YT0yNDA2O2UuemVyb2d1amFyYXRpPTI3OTA7ZS56ZXJvZ3VybXVraGk9MjY2MjtlLnplcm9oYWNrYXJhYmljPTE2MzI7ZS56ZXJvaW5mZXJpb3I9ODMyMDtlLnplcm9tb25vc3BhY2U9NjUyOTY7ZS56ZXJvb2xkc3R5bGU9NjMyODA7ZS56ZXJvcGVyc2lhbj0xNzc2O2UuemVyb3N1cGVyaW9yPTgzMDQ7ZS56ZXJvdGhhaT0zNjY0O2UuemVyb3dpZHRoam9pbmVyPTY1Mjc5O2UuemVyb3dpZHRobm9uam9pbmVyPTgyMDQ7ZS56ZXJvd2lkdGhzcGFjZT04MjAzO2UuemV0YT05NTA7ZS56aGJvcG9tb2ZvPTEyNTYzO2UuemhlYXJtZW5pYW49MTM4NjtlLnpoZWJyZXZlY3lyaWxsaWM9MTIxODtlLnpoZWN5cmlsbGljPTEwNzg7ZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1O2UuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1O2UuemloaXJhZ2FuYT0xMjM3NjtlLnppa2F0YWthbmE9MTI0NzI7ZS56aW5vcmhlYnJldz0xNDU0O2UuemxpbmViZWxvdz03ODI5O2Uuem1vbm9zcGFjZT02NTM3MDtlLnpvaGlyYWdhbmE9MTIzODI7ZS56b2thdGFrYW5hPTEyNDc4O2UuenBhcmVuPTkzOTc7ZS56cmV0cm9mbGV4aG9vaz02NTY7ZS56c3Ryb2tlPTQzODtlLnp1aGlyYWdhbmE9MTIzNzg7ZS56dWthdGFrYW5hPTEyNDc0O2VbIi5ub3RkZWYiXT0wO2UuYW5nYnJhY2tldGxlZnRiaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxO2UuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMjtlLmFycm93aG9va2xlZnQ9ODYxODtlLmFycm93aG9va3JpZ2h0PTg2MTc7ZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzY7ZS5hcnJvd2xlZnRib3RoYWxmPTg2Mzc7ZS5hcnJvd25vcnRoZWFzdD04NTk5O2UuYXJyb3dub3J0aHdlc3Q9ODU5ODtlLmFycm93cmlnaHR0b3BoYWxmPTg2NDA7ZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxO2UuYXJyb3dzb3V0aGVhc3Q9ODYwMDtlLmFycm93c291dGh3ZXN0PTg2MDE7ZS5iYWNrc2xhc2hiaWc9ODcyNjtlLmJhY2tzbGFzaEJpZz04NzI2O2UuYmFja3NsYXNoQmlnZz04NzI2O2UuYmFja3NsYXNoYmlnZz04NzI2O2UuYmFyZGJsPTgyMTQ7ZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OTtlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OTtlLmJyYWNlaHRpcHVwbGVmdD02NTA4MDtlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODA7ZS5icmFjZWxlZnRCaWc9MTIzO2UuYnJhY2VsZWZ0YmlnPTEyMztlLmJyYWNlbGVmdGJpZ2c9MTIzO2UuYnJhY2VsZWZ0QmlnZz0xMjM7ZS5icmFjZXJpZ2h0QmlnPTEyNTtlLmJyYWNlcmlnaHRiaWc9MTI1O2UuYnJhY2VyaWdodGJpZ2c9MTI1O2UuYnJhY2VyaWdodEJpZ2c9MTI1O2UuYnJhY2tldGxlZnRiaWc9OTE7ZS5icmFja2V0bGVmdEJpZz05MTtlLmJyYWNrZXRsZWZ0YmlnZz05MTtlLmJyYWNrZXRsZWZ0QmlnZz05MTtlLmJyYWNrZXRyaWdodEJpZz05MztlLmJyYWNrZXRyaWdodGJpZz05MztlLmJyYWNrZXRyaWdodGJpZ2c9OTM7ZS5icmFja2V0cmlnaHRCaWdnPTkzO2UuY2VpbGluZ2xlZnRiaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZ2c9ODk2ODtlLmNlaWxpbmdsZWZ0YmlnZz04OTY4O2UuY2VpbGluZ3JpZ2h0YmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWc9ODk2OTtlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OTtlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OTtlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NztlLmNpcmNsZWRvdHRleHQ9ODg1NztlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1O2UuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTU7ZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzO2UuY2lyY2xlcGx1c3RleHQ9ODg1MztlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MDtlLmNvbnRpbnRlZ3JhbHRleHQ9ODc1MDtlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMDtlLmNvcHJvZHVjdHRleHQ9ODcyMDtlLmZsb29ybGVmdEJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWdnPTg5NzA7ZS5mbG9vcmxlZnRCaWdnPTg5NzA7ZS5mbG9vcnJpZ2h0YmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnZz04OTcxO2UuZmxvb3JyaWdodGJpZ2c9ODk3MTtlLmhhdHdpZGU9NzcwO2UuaGF0d2lkZXI9NzcwO2UuaGF0d2lkZXN0PTc3MDtlLmludGVyY2FsPTc0ODg7ZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NztlLmludGVncmFsdGV4dD04NzQ3O2UuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4O2UuaW50ZXJzZWN0aW9udGV4dD04ODk4O2UubG9naWNhbGFuZGRpc3BsYXk9ODc0MztlLmxvZ2ljYWxhbmR0ZXh0PTg3NDM7ZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQ7ZS5sb2dpY2Fsb3J0ZXh0PTg3NDQ7ZS5wYXJlbmxlZnRCaWc9NDA7ZS5wYXJlbmxlZnRiaWc9NDA7ZS5wYXJlbmxlZnRCaWdnPTQwO2UucGFyZW5sZWZ0YmlnZz00MDtlLnBhcmVucmlnaHRCaWc9NDE7ZS5wYXJlbnJpZ2h0YmlnPTQxO2UucGFyZW5yaWdodEJpZ2c9NDE7ZS5wYXJlbnJpZ2h0YmlnZz00MTtlLnByaW1lPTgyNDI7ZS5wcm9kdWN0ZGlzcGxheT04NzE5O2UucHJvZHVjdHRleHQ9ODcxOTtlLnJhZGljYWxiaWc9ODczMDtlLnJhZGljYWxCaWc9ODczMDtlLnJhZGljYWxCaWdnPTg3MzA7ZS5yYWRpY2FsYmlnZz04NzMwO2UucmFkaWNhbGJ0PTg3MzA7ZS5yYWRpY2FsdHA9ODczMDtlLnJhZGljYWx2ZXJ0ZXg9ODczMDtlLnNsYXNoYmlnPTQ3O2Uuc2xhc2hCaWc9NDc7ZS5zbGFzaEJpZ2c9NDc7ZS5zbGFzaGJpZ2c9NDc7ZS5zdW1tYXRpb25kaXNwbGF5PTg3MjE7ZS5zdW1tYXRpb250ZXh0PTg3MjE7ZS50aWxkZXdpZGU9NzMyO2UudGlsZGV3aWRlcj03MzI7ZS50aWxkZXdpZGVzdD03MzI7ZS51bmlvbmRpc3BsYXk9ODg5OTtlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDY7ZS51bmlvbm11bHRpdGV4dD04ODQ2O2UudW5pb25zcWRpc3BsYXk9ODg1MjtlLnVuaW9uc3F0ZXh0PTg4NTI7ZS51bmlvbnRleHQ9ODg5OTtlLnZleHRlbmRkb3VibGU9ODc0MTtlLnZleHRlbmRzaW5nbGU9ODczOX0pKSxNaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pKSxIaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IGk9dFtlXTtpZih2b2lkIDAhPT1pKXJldHVybiBpO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pYT1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7YT1lLnN1YnN0cmluZygxKX1pZihhPT09YS50b1VwcGVyQ2FzZSgpKXtpPXBhcnNlSW50KGEsMTYpO2lmKGk+PTApcmV0dXJuIGl9fXJldHVybi0xfWNvbnN0IEppPVtbMCwxMjddLFsxMjgsMjU1XSxbMjU2LDM4M10sWzM4NCw1OTFdLFs1OTIsNjg3LDc0MjQsNzU1MSw3NTUyLDc2MTVdLFs2ODgsNzY3LDQyNzUyLDQyNzgzXSxbNzY4LDg3OSw3NjE2LDc2NzldLFs4ODAsMTAyM10sWzExMzkyLDExNTE5XSxbMTAyNCwxMjc5LDEyODAsMTMyNywxMTc0NCwxMTc3NSw0MjU2MCw0MjY1NV0sWzEzMjgsMTQyM10sWzE0MjQsMTUzNV0sWzQyMjQwLDQyNTU5XSxbMTUzNiwxNzkxLDE4NzIsMTkxOV0sWzE5ODQsMjA0N10sWzIzMDQsMjQzMV0sWzI0MzIsMjU1OV0sWzI1NjAsMjY4N10sWzI2ODgsMjgxNV0sWzI4MTYsMjk0M10sWzI5NDQsMzA3MV0sWzMwNzIsMzE5OV0sWzMyMDAsMzMyN10sWzMzMjgsMzQ1NV0sWzM1ODQsMzcxMV0sWzM3MTIsMzgzOV0sWzQyNTYsNDM1MSwxMTUyMCwxMTU2N10sWzY5MTIsNzAzOV0sWzQzNTIsNDYwN10sWzc2ODAsNzkzNSwxMTM2MCwxMTM5MSw0Mjc4NCw0MzAwN10sWzc5MzYsODE5MV0sWzgxOTIsODMwMywxMTc3NiwxMTkwM10sWzgzMDQsODM1MV0sWzgzNTIsODM5OV0sWzg0MDAsODQ0N10sWzg0NDgsODUyN10sWzg1MjgsODU5MV0sWzg1OTIsODcwMywxMDIyNCwxMDIzOSwxMDQ5NiwxMDYyMywxMTAwOCwxMTI2M10sWzg3MDQsODk1OSwxMDc1MiwxMTAwNywxMDE3NiwxMDIyMywxMDYyNCwxMDc1MV0sWzg5NjAsOTIxNV0sWzkyMTYsOTI3OV0sWzkyODAsOTMxMV0sWzkzMTIsOTQ3MV0sWzk0NzIsOTU5OV0sWzk2MDAsOTYzMV0sWzk2MzIsOTcyN10sWzk3MjgsOTk4M10sWzk5ODQsMTAxNzVdLFsxMjI4OCwxMjM1MV0sWzEyMzUyLDEyNDQ3XSxbMTI0NDgsMTI1NDMsMTI3ODQsMTI3OTldLFsxMjU0NCwxMjU5MSwxMjcwNCwxMjczNV0sWzEyNTkyLDEyNjg3XSxbNDMwNzIsNDMxMzVdLFsxMjgwMCwxMzA1NV0sWzEzMDU2LDEzMzExXSxbNDQwMzIsNTUyMTVdLFs1NTI5Niw1NzM0M10sWzY3ODQwLDY3ODcxXSxbMTk5NjgsNDA5NTksMTE5MDQsMTIwMzEsMTIwMzIsMTIyNTUsMTIyNzIsMTIyODcsMTMzMTIsMTk5MDMsMTMxMDcyLDE3Mzc5MSwxMjY4OCwxMjcwM10sWzU3MzQ0LDYzNzQzXSxbMTI3MzYsMTI3ODMsNjM3NDQsNjQyNTUsMTk0NTYwLDE5NTEwM10sWzY0MjU2LDY0MzM1XSxbNjQzMzYsNjUwMjNdLFs2NTA1Niw2NTA3MV0sWzY1MDQwLDY1MDU1XSxbNjUxMDQsNjUxMzVdLFs2NTEzNiw2NTI3OV0sWzY1MjgwLDY1NTE5XSxbNjU1MjAsNjU1MzVdLFszODQwLDQwOTVdLFsxNzkyLDE4NzFdLFsxOTIwLDE5ODNdLFszNDU2LDM1ODNdLFs0MDk2LDQyNTVdLFs0NjA4LDQ5OTEsNDk5Miw1MDIzLDExNjQ4LDExNzQzXSxbNTAyNCw1MTE5XSxbNTEyMCw1NzU5XSxbNTc2MCw1NzkxXSxbNTc5Miw1ODg3XSxbNjAxNiw2MTQzXSxbNjE0NCw2MzE5XSxbMTAyNDAsMTA0OTVdLFs0MDk2MCw0MjEyN10sWzU4ODgsNTkxOSw1OTIwLDU5NTEsNTk1Miw1OTgzLDU5ODQsNjAxNV0sWzY2MzA0LDY2MzUxXSxbNjYzNTIsNjYzODNdLFs2NjU2MCw2NjYzOV0sWzExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTkyOTYsMTE5Mzc1XSxbMTE5ODA4LDEyMDgzMV0sWzEwNDQ0ODAsMTA0ODU3M10sWzY1MDI0LDY1MDM5LDkxNzc2MCw5MTc5OTldLFs5MTc1MDQsOTE3NjMxXSxbNjQwMCw2NDc5XSxbNjQ4MCw2NTI3XSxbNjUyOCw2NjIzXSxbNjY1Niw2Njg3XSxbMTEyNjQsMTEzNTldLFsxMTU2OCwxMTY0N10sWzE5OTA0LDE5OTY3XSxbNDMwMDgsNDMwNTVdLFs2NTUzNiw2NTY2Myw2NTY2NCw2NTc5MSw2NTc5Miw2NTg1NV0sWzY1ODU2LDY1OTM1XSxbNjY0MzIsNjY0NjNdLFs2NjQ2NCw2NjUyN10sWzY2NjQwLDY2Njg3XSxbNjY2ODgsNjY3MzVdLFs2NzU4NCw2NzY0N10sWzY4MDk2LDY4MTkxXSxbMTE5NTUyLDExOTY0N10sWzczNzI4LDc0NzUxLDc0NzUyLDc0ODc5XSxbMTE5NjQ4LDExOTY3OV0sWzcwNDAsNzEwM10sWzcxNjgsNzI0N10sWzcyNDgsNzI5NV0sWzQzMTM2LDQzMjMxXSxbNDMyNjQsNDMzMTFdLFs0MzMxMiw0MzM1OV0sWzQzNTIwLDQzNjE1XSxbNjU5MzYsNjU5OTldLFs2NmUzLDY2MDQ3XSxbNjYyMDgsNjYyNzEsNjYxNzYsNjYyMDcsNjc4NzIsNjc5MDNdLFsxMjcwMjQsMTI3MTM1LDEyNjk3NiwxMjcwMjNdXTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSx0PS0xKXtpZigtMSE9PXQpe2NvbnN0IGk9SmlbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9Zm9yKGxldCB0PTAsaT1KaS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1KaVt0XTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKz0yKWlmKGU+PWlbYV0mJmU8PWlbYSsxXSlyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBZaT1uZXcgUmVnRXhwKCJeKFxccyl8KFxccHtNbn0pfChcXHB7Q2Z9KSQiLCJ1Iiksdmk9bmV3IE1hcDtjb25zdCBUaT0hMCxLaT0xLHFpPTIsT2k9NCxQaT0zMixXaT1bIi5ub3RkZWYiLCIubnVsbCIsIm5vbm1hcmtpbmdyZXR1cm4iLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsIm5vbmJyZWFraW5nc3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsIkxzbGFzaCIsImxzbGFzaCIsIlNjYXJvbiIsInNjYXJvbiIsIlpjYXJvbiIsInpjYXJvbiIsImJyb2tlbmJhciIsIkV0aCIsImV0aCIsIllhY3V0ZSIsInlhY3V0ZSIsIlRob3JuIiwidGhvcm4iLCJtaW51cyIsIm11bHRpcGx5Iiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJvbmVoYWxmIiwib25lcXVhcnRlciIsInRocmVlcXVhcnRlcnMiLCJmcmFuYyIsIkdicmV2ZSIsImdicmV2ZSIsIklkb3RhY2NlbnQiLCJTY2VkaWxsYSIsInNjZWRpbGxhIiwiQ2FjdXRlIiwiY2FjdXRlIiwiQ2Nhcm9uIiwiY2Nhcm9uIiwiZGNyb2F0Il07ZnVuY3Rpb24gcmVjb3ZlckdseXBoTmFtZShlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7Y29uc3QgaT1nZXRVbmljb2RlRm9yR2x5cGgoZSx0KTtpZigtMSE9PWkpZm9yKGNvbnN0IGUgaW4gdClpZih0W2VdPT09aSlyZXR1cm4gZTtpbmZvKCJVbmFibGUgdG8gcmVjb3ZlciBhIHN0YW5kYXJkIGdseXBoIG5hbWUgZm9yOiAiK2UpO3JldHVybiBlfWZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLHMsbjtjb25zdCBvPSEhKGUuZmxhZ3MmT2kpO2lmKGUuaXNJbnRlcm5hbEZvbnQpe249dDtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSl7bj1nZXRFbmNvZGluZyhlLmJhc2VFbmNvZGluZ05hbWUpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWVsc2UgaWYobylmb3IocyBpbiB0KWFbc109dFtzXTtlbHNle249bWk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19Y29uc3QgZz1lLmRpZmZlcmVuY2VzO2xldCBjO2lmKGcpZm9yKHMgaW4gZyl7Y29uc3QgZT1nW3NdO3I9aS5pbmRleE9mKGUpO2lmKC0xPT09cil7Y3x8KGM9eGkoKSk7Y29uc3QgdD1yZWNvdmVyR2x5cGhOYW1lKGUsYyk7dCE9PWUmJihyPWkuaW5kZXhPZih0KSl9YVtzXT1yPj0wP3I6MH1yZXR1cm4gYX1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX1jb25zdCBqaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFhpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLFppPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSJ9KSksVmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pKSxfaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuRGluZ2JhdHM9ITA7ZS5TeW1ib2w9ITA7ZS5aYXBmRGluZ2JhdHM9ITA7ZS5XaW5nZGluZ3M9ITA7ZVsiV2luZ2RpbmdzLUJvbGQiXT0hMDtlWyJXaW5nZGluZ3MtUmVndWxhciJdPSEwfSkpLHppPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsyXT0xMDtlWzNdPTMyO2VbNF09MzM7ZVs1XT0zNDtlWzZdPTM1O2VbN109MzY7ZVs4XT0zNztlWzldPTM4O2VbMTBdPTM5O2VbMTFdPTQwO2VbMTJdPTQxO2VbMTNdPTQyO2VbMTRdPTQzO2VbMTVdPTQ0O2VbMTZdPTQ1O2VbMTddPTQ2O2VbMThdPTQ3O2VbMTldPTQ4O2VbMjBdPTQ5O2VbMjFdPTUwO2VbMjJdPTUxO2VbMjNdPTUyO2VbMjRdPTUzO2VbMjVdPTU0O2VbMjZdPTU1O2VbMjddPTU2O2VbMjhdPTU3O2VbMjldPTU4O2VbMzBdPTg5NDtlWzMxXT02MDtlWzMyXT02MTtlWzMzXT02MjtlWzM0XT02MztlWzM1XT02NDtlWzM2XT02NTtlWzM3XT02NjtlWzM4XT02NztlWzM5XT02ODtlWzQwXT02OTtlWzQxXT03MDtlWzQyXT03MTtlWzQzXT03MjtlWzQ0XT03MztlWzQ1XT03NDtlWzQ2XT03NTtlWzQ3XT03NjtlWzQ4XT03NztlWzQ5XT03ODtlWzUwXT03OTtlWzUxXT04MDtlWzUyXT04MTtlWzUzXT04MjtlWzU0XT04MztlWzU1XT04NDtlWzU2XT04NTtlWzU3XT04NjtlWzU4XT04NztlWzU5XT04ODtlWzYwXT04OTtlWzYxXT05MDtlWzYyXT05MTtlWzYzXT05MjtlWzY0XT05MztlWzY1XT05NDtlWzY2XT05NTtlWzY3XT05NjtlWzY4XT05NztlWzY5XT05ODtlWzcwXT05OTtlWzcxXT0xMDA7ZVs3Ml09MTAxO2VbNzNdPTEwMjtlWzc0XT0xMDM7ZVs3NV09MTA0O2VbNzZdPTEwNTtlWzc3XT0xMDY7ZVs3OF09MTA3O2VbNzldPTEwODtlWzgwXT0xMDk7ZVs4MV09MTEwO2VbODJdPTExMTtlWzgzXT0xMTI7ZVs4NF09MTEzO2VbODVdPTExNDtlWzg2XT0xMTU7ZVs4N109MTE2O2VbODhdPTExNztlWzg5XT0xMTg7ZVs5MF09MTE5O2VbOTFdPTEyMDtlWzkyXT0xMjE7ZVs5M109MTIyO2VbOTRdPTEyMztlWzk1XT0xMjQ7ZVs5Nl09MTI1O2VbOTddPTEyNjtlWzk4XT0xOTY7ZVs5OV09MTk3O2VbMTAwXT0xOTk7ZVsxMDFdPTIwMTtlWzEwMl09MjA5O2VbMTAzXT0yMTQ7ZVsxMDRdPTIyMDtlWzEwNV09MjI1O2VbMTA2XT0yMjQ7ZVsxMDddPTIyNjtlWzEwOF09MjI4O2VbMTA5XT0yMjc7ZVsxMTBdPTIyOTtlWzExMV09MjMxO2VbMTEyXT0yMzM7ZVsxMTNdPTIzMjtlWzExNF09MjM0O2VbMTE1XT0yMzU7ZVsxMTZdPTIzNztlWzExN109MjM2O2VbMTE4XT0yMzg7ZVsxMTldPTIzOTtlWzEyMF09MjQxO2VbMTIxXT0yNDM7ZVsxMjJdPTI0MjtlWzEyM109MjQ0O2VbMTI0XT0yNDY7ZVsxMjVdPTI0NTtlWzEyNl09MjUwO2VbMTI3XT0yNDk7ZVsxMjhdPTI1MTtlWzEyOV09MjUyO2VbMTMwXT04MjI0O2VbMTMxXT0xNzY7ZVsxMzJdPTE2MjtlWzEzM109MTYzO2VbMTM0XT0xNjc7ZVsxMzVdPTgyMjY7ZVsxMzZdPTE4MjtlWzEzN109MjIzO2VbMTM4XT0xNzQ7ZVsxMzldPTE2OTtlWzE0MF09ODQ4MjtlWzE0MV09MTgwO2VbMTQyXT0xNjg7ZVsxNDNdPTg4MDA7ZVsxNDRdPTE5ODtlWzE0NV09MjE2O2VbMTQ2XT04NzM0O2VbMTQ3XT0xNzc7ZVsxNDhdPTg4MDQ7ZVsxNDldPTg4MDU7ZVsxNTBdPTE2NTtlWzE1MV09MTgxO2VbMTUyXT04NzA2O2VbMTUzXT04NzIxO2VbMTU0XT04NzE5O2VbMTU2XT04NzQ3O2VbMTU3XT0xNzA7ZVsxNThdPTE4NjtlWzE1OV09ODQ4NjtlWzE2MF09MjMwO2VbMTYxXT0yNDg7ZVsxNjJdPTE5MTtlWzE2M109MTYxO2VbMTY0XT0xNzI7ZVsxNjVdPTg3MzA7ZVsxNjZdPTQwMjtlWzE2N109ODc3NjtlWzE2OF09ODcxMDtlWzE2OV09MTcxO2VbMTcwXT0xODc7ZVsxNzFdPTgyMzA7ZVsxNzldPTgyMjA7ZVsxODBdPTgyMjE7ZVsxODFdPTgyMTY7ZVsxODJdPTgyMTc7ZVsyMDBdPTE5MztlWzIwM109MjA1O2VbMjA3XT0yMTE7ZVsyMTBdPTIxODtlWzIyM109NzExO2VbMjI0XT0zMjE7ZVsyMjVdPTMyMjtlWzIyNl09MzUyO2VbMjI3XT0zNTM7ZVsyMjhdPTM4MTtlWzIyOV09MzgyO2VbMjMzXT0yMjE7ZVsyMzRdPTI1MztlWzI1Ml09MjYzO2VbMjUzXT0yNjg7ZVsyNTRdPTI2OTtlWzI1OF09MjU4O2VbMjYwXT0yNjA7ZVsyNjFdPTI2MTtlWzI2NV09MjgwO2VbMjY2XT0yODE7ZVsyNjddPTI4MjtlWzI2OF09MjgzO2VbMjY5XT0zMTM7ZVsyNzVdPTMyMztlWzI3Nl09MzI0O2VbMjc4XT0zMjg7ZVsyODNdPTM0NDtlWzI4NF09MzQ1O2VbMjg1XT0zNDY7ZVsyODZdPTM0NztlWzI5Ml09MzY3O2VbMjk1XT0zNzc7ZVsyOTZdPTM3ODtlWzI5OF09MzgwO2VbMzA1XT05NjM7ZVszMDZdPTk2NDtlWzMwN109OTY2O2VbMzA4XT04MjE1O2VbMzA5XT04MjUyO2VbMzEwXT04MzE5O2VbMzExXT04MzU5O2VbMzEyXT04NTkyO2VbMzEzXT04NTkzO2VbMzM3XT05NTUyO2VbNDkzXT0xMDM5O2VbNDk0XT0xMDQwO2VbNjcyXT0xNDg4O2VbNjczXT0xNDg5O2VbNjc0XT0xNDkwO2VbNjc1XT0xNDkxO2VbNjc2XT0xNDkyO2VbNjc3XT0xNDkzO2VbNjc4XT0xNDk0O2VbNjc5XT0xNDk1O2VbNjgwXT0xNDk2O2VbNjgxXT0xNDk3O2VbNjgyXT0xNDk4O2VbNjgzXT0xNDk5O2VbNjg0XT0xNTAwO2VbNjg1XT0xNTAxO2VbNjg2XT0xNTAyO2VbNjg3XT0xNTAzO2VbNjg4XT0xNTA0O2VbNjg5XT0xNTA1O2VbNjkwXT0xNTA2O2VbNjkxXT0xNTA3O2VbNjkyXT0xNTA4O2VbNjkzXT0xNTA5O2VbNjk0XT0xNTEwO2VbNjk1XT0xNTExO2VbNjk2XT0xNTEyO2VbNjk3XT0xNTEzO2VbNjk4XT0xNTE0O2VbNzA1XT0xNTI0O2VbNzA2XT04MzYyO2VbNzEwXT02NDI4ODtlWzcxMV09NjQyOTg7ZVs3NTldPTE2MTc7ZVs3NjFdPTE3NzY7ZVs3NjNdPTE3Nzg7ZVs3NzVdPTE2NTI7ZVs3NzddPTE3NjQ7ZVs3NzhdPTE3ODA7ZVs3NzldPTE3ODE7ZVs3ODBdPTE3ODI7ZVs3ODJdPTc3MTtlWzc4M109NjQ3MjY7ZVs3ODZdPTgzNjM7ZVs3ODhdPTg1MzI7ZVs3OTBdPTc2ODtlWzc5MV09NzY5O2VbNzkyXT03Njg7ZVs3OTVdPTgwMztlWzc5N109NjQzMzY7ZVs3OThdPTY0MzM3O2VbNzk5XT02NDM0MjtlWzgwMF09NjQzNDM7ZVs4MDFdPTY0MzQ0O2VbODAyXT02NDM0NTtlWzgwM109NjQzNjI7ZVs4MDRdPTY0MzYzO2VbODA1XT02NDM2NDtlWzI0MjRdPTc4MjE7ZVsyNDI1XT03ODIyO2VbMjQyNl09NzgyMztlWzI0MjddPTc4MjQ7ZVsyNDI4XT03ODI1O2VbMjQyOV09NzgyNjtlWzI0MzBdPTc4Mjc7ZVsyNDMzXT03NjgyO2VbMjY3OF09ODA0NTtlWzI2NzldPTgwNDY7ZVsyODMwXT0xNTUyO2VbMjgzOF09Njg2O2VbMjg0MF09NzUxO2VbMjg0Ml09NzUzO2VbMjg0M109NzU0O2VbMjg0NF09NzU1O2VbMjg0Nl09NzU3O2VbMjg1Nl09NzY3O2VbMjg1N109ODQ4O2VbMjg1OF09ODQ5O2VbMjg2Ml09ODUzO2VbMjg2M109ODU0O2VbMjg2NF09ODU1O2VbMjg2NV09ODYxO2VbMjg2Nl09ODYyO2VbMjkwNl09NzQ2MDtlWzI5MDhdPTc0NjI7ZVsyOTA5XT03NDYzO2VbMjkxMF09NzQ2NDtlWzI5MTJdPTc0NjY7ZVsyOTEzXT03NDY3O2VbMjkxNF09NzQ2ODtlWzI5MTZdPTc0NzA7ZVsyOTE3XT03NDcxO2VbMjkxOF09NzQ3MjtlWzI5MjBdPTc0NzQ7ZVsyOTIxXT03NDc1O2VbMjkyMl09NzQ3NjtlWzI5MjRdPTc0Nzg7ZVsyOTI1XT03NDc5O2VbMjkyNl09NzQ4MDtlWzI5MjhdPTc0ODI7ZVsyOTI5XT03NDgzO2VbMjkzMF09NzQ4NDtlWzI5MzJdPTc0ODY7ZVsyOTMzXT03NDg3O2VbMjkzNF09NzQ4ODtlWzI5MzZdPTc0OTA7ZVsyOTM3XT03NDkxO2VbMjkzOF09NzQ5MjtlWzI5NDBdPTc0OTQ7ZVsyOTQxXT03NDk1O2VbMjk0Ml09NzQ5NjtlWzI5NDRdPTc0OTg7ZVsyOTQ2XT03NTAwO2VbMjk0OF09NzUwMjtlWzI5NTBdPTc1MDQ7ZVsyOTUxXT03NTA1O2VbMjk1Ml09NzUwNjtlWzI5NTRdPTc1MDg7ZVsyOTU1XT03NTA5O2VbMjk1Nl09NzUxMDtlWzI5NThdPTc1MTI7ZVsyOTU5XT03NTEzO2VbMjk2MF09NzUxNDtlWzI5NjJdPTc1MTY7ZVsyOTYzXT03NTE3O2VbMjk2NF09NzUxODtlWzI5NjZdPTc1MjA7ZVsyOTY3XT03NTIxO2VbMjk2OF09NzUyMjtlWzI5NzBdPTc1MjQ7ZVsyOTcxXT03NTI1O2VbMjk3Ml09NzUyNjtlWzI5NzRdPTc1Mjg7ZVsyOTc1XT03NTI5O2VbMjk3Nl09NzUzMDtlWzI5NzhdPTE1Mzc7ZVsyOTc5XT0xNTM4O2VbMjk4MF09MTUzOTtlWzI5ODJdPTE1NDk7ZVsyOTgzXT0xNTUxO2VbMjk4NF09MTU1MjtlWzI5ODZdPTE1NTQ7ZVsyOTg3XT0xNTU1O2VbMjk4OF09MTU1NjtlWzI5OTBdPTE2MjM7ZVsyOTkxXT0xNjI0O2VbMjk5NV09MTc3NTtlWzI5OTldPTE3OTE7ZVszMDAyXT02NDI5MDtlWzMwMDNdPTY0MjkxO2VbMzAwNF09NjQyOTI7ZVszMDA2XT02NDI5NDtlWzMwMDddPTY0Mjk1O2VbMzAwOF09NjQyOTY7ZVszMDExXT0xOTAwO2VbMzAxNF09ODIyMztlWzMwMTVdPTgyNDQ7ZVszMDE3XT03NTMyO2VbMzAxOF09NzUzMztlWzMwMTldPTc1MzQ7ZVszMDc1XT03NTkwO2VbMzA3Nl09NzU5MTtlWzMwNzldPTc1OTQ7ZVszMDgwXT03NTk1O2VbMzA4M109NzU5ODtlWzMwODRdPTc1OTk7ZVszMDg3XT03NjAyO2VbMzA4OF09NzYwMztlWzMwOTFdPTc2MDY7ZVszMDkyXT03NjA3O2VbMzA5NV09NzYxMDtlWzMwOTZdPTc2MTE7ZVszMDk5XT03NjE0O2VbMzEwMF09NzYxNTtlWzMxMDNdPTc2MTg7ZVszMTA0XT03NjE5O2VbMzEwN109ODMzNztlWzMxMDhdPTgzMzg7ZVszMTE2XT0xODg0O2VbMzExOV09MTg4NTtlWzMxMjBdPTE4ODU7ZVszMTIzXT0xODg2O2VbMzEyNF09MTg4NjtlWzMxMjddPTE4ODc7ZVszMTI4XT0xODg3O2VbMzEzMV09MTg4ODtlWzMxMzJdPTE4ODg7ZVszMTM1XT0xODg5O2VbMzEzNl09MTg4OTtlWzMxMzldPTE4OTA7ZVszMTQwXT0xODkwO2VbMzE0M109MTg5MTtlWzMxNDRdPTE4OTE7ZVszMTQ3XT0xODkyO2VbMzE0OF09MTg5MjtlWzMxNTNdPTU4MDtlWzMxNTRdPTU4MTtlWzMxNTddPTU4NDtlWzMxNThdPTU4NTtlWzMxNjFdPTU4ODtlWzMxNjJdPTU4OTtlWzMxNjVdPTg5MTtlWzMxNjZdPTg5MjtlWzMxNjldPTEyNzQ7ZVszMTcwXT0xMjc1O2VbMzE3M109MTI3ODtlWzMxNzRdPTEyNzk7ZVszMTgxXT03NjIyO2VbMzE4Ml09NzYyMztlWzMyODJdPTExNzk5O2VbMzMxNl09NTc4O2VbMzM3OV09NDI3ODU7ZVszMzkzXT0xMTU5O2VbMzQxNl09ODM3N30pKSwkaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpLEFhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KSk7ZnVuY3Rpb24gZ2V0U3RhbmRhcmRGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBqaSgpW3RdfWZ1bmN0aW9uIGlzS25vd25Gb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiEhKGppKClbdF18fFppKClbdF18fFZpKClbdF18fF9pKClbdF0pfWNsYXNzIFRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLl9tYXA9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuX21hcFt0XS5jaGFyQ29kZUF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBpIGluIHQpaWYodFtpXT09PWUpcmV0dXJuIDB8aTtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLGk9dGhpcy5sYXN0Q2hhcjt0PD1pO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IGk9bmV3IENGRlBhcnNlcihlLHQsVGkpO3RoaXMuY2ZmPWkucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgYT1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1hLmNvbXBpbGUoKX1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmksY01hcDphfT10LHI9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbjtpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbztpZihpPy5sZW5ndGg+MCl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLGE9aS5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1pW2VdO3ZvaWQgMCE9PWEmJih0W2FdPWUpfX1zPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5pc0NJREZvbnQpZm9yKG49MDtuPHIubGVuZ3RoO24rKyl7Y29uc3QgZT1yW25dO289YS5jaGFyQ29kZU9mKGUpO3ZvaWQgMCE9PXQ/LltvXSYmKG89dFtvXSk7c1tvXT1ufWVsc2UgZm9yKG49MDtuPGUuY2hhclN0cmluZ3MuY291bnQ7bisrKXtvPWEuY2hhckNvZGVPZihuKTtzW29dPW59cmV0dXJuIHN9bGV0IG89ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKG89dC5kZWZhdWx0RW5jb2RpbmcpO3M9dHlwZTFGb250R2x5cGhNYXBwaW5nKHQsbyxyKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBpPWUuY2hhcnNldCxhPXQuZW5jb2Rpbmcscj1bXTtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07aWYodD49MCl7Y29uc3QgYT1pW3RdO2EmJihyW2VdPWEpfX1yLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1yKX19ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTMyNzY4O3Q8MTI0MD9pPTEwNzp0PDMzOTAwJiYoaT0xMTMxKTtyZXR1cm4gaX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGkpe2NvbnN0IGE9MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxyPWdldFVpbnQxNihlLHQrYSk7bGV0IHMsbixvO2lmKDQ9PT1yKXtnZXRVaW50MTYoZSx0K2ErMik7Y29uc3QgaT1nZXRVaW50MTYoZSx0K2ErNik+PjE7bj10K2ErMTQ7cz1bXTtmb3Iobz0wO288aTtvKyssbis9MilzW29dPXtlbmQ6Z2V0VWludDE2KGUsbil9O24rPTI7Zm9yKG89MDtvPGk7bysrLG4rPTIpc1tvXS5zdGFydD1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9MilzW29dLmlkRGVsdGE9Z2V0VWludDE2KGUsbik7Zm9yKG89MDtvPGk7bysrLG4rPTIpe2xldCB0PWdldFVpbnQxNihlLG4pO2lmKDAhPT10KXtzW29dLmlkcz1bXTtmb3IobGV0IGk9MCxhPXNbb10uZW5kLXNbb10uc3RhcnQrMTtpPGE7aSsrKXtzW29dLmlkc1tpXT1nZXRVaW50MTYoZSxuK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PXIpe2NvbnN0IGk9Z2V0VWludDMyKGUsdCthKzEyKTtuPXQrYSsxNjtzPVtdO2ZvcihvPTA7bzxpO28rKyl7dD1nZXRVaW50MzIoZSxuKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG4rNCksaWREZWx0YTpnZXRVaW50MzIoZSxuKzgpLXR9KTtuKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVuc3VwcG9ydGVkIGNtYXA6ICR7cn1gKX1mdW5jdGlvbiBwYXJzZUNmZihlLHQsaSxhKXtjb25zdCByPW5ldyBDRkZQYXJzZXIobmV3IFN0cmVhbShlLHQsaS10KSx7fSxhKS5wYXJzZSgpO3JldHVybntnbHlwaHM6ci5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOnIudG9wRGljdC5wcml2YXRlRGljdD8uc3VicnNJbmRleD8ub2JqZWN0cyxnc3VicnM6ci5nbG9iYWxTdWJySW5kZXg/Lm9iamVjdHMsaXNDRkZDSURGb250OnIuaXNDSURGb250LGZkU2VsZWN0OnIuZmRTZWxlY3QsZmRBcnJheTpyLmZkQXJyYXl9fWZ1bmN0aW9uIGxvb2t1cENtYXAoZSx0KXtjb25zdCBpPXQuY29kZVBvaW50QXQoMCk7bGV0IGE9MCxyPTAscz1lLmxlbmd0aC0xO2Zvcig7cjxzOyl7Y29uc3QgdD1yK3MrMT4+MTtpPGVbdF0uc3RhcnQ/cz10LTE6cj10fWVbcl0uc3RhcnQ8PWkmJmk8PWVbcl0uZW5kJiYoYT1lW3JdLmlkRGVsdGErKGVbcl0uaWRzP2Vbcl0uaWRzW2ktZVtyXS5zdGFydF06aSkmNjU1MzUpO3JldHVybntjaGFyQ29kZTppLGdseXBoSWQ6YX19ZnVuY3Rpb24gY29tcGlsZUdseWYoZSx0LGkpe2Z1bmN0aW9uIG1vdmVUbyhlLGkpe3QuYWRkKGx0LFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZChCdCxbZSxpXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLGksYSxyKXt0LmFkZChRdCxbZSxpLGEscl0pfWxldCBhPTA7Y29uc3Qgcj1nZXRJbnQxNihlLGEpO2xldCBzLG49MCxvPTA7YSs9MTA7aWYocjwwKWRve3M9Z2V0VWludDE2KGUsYSk7Y29uc3Qgcj1nZXRVaW50MTYoZSxhKzIpO2ErPTQ7bGV0IGcsYztpZigxJnMpe2lmKDImcyl7Zz1nZXRJbnQxNihlLGEpO2M9Z2V0SW50MTYoZSxhKzIpfWVsc2V7Zz1nZXRVaW50MTYoZSxhKTtjPWdldFVpbnQxNihlLGErMil9YSs9NH1lbHNlIGlmKDImcyl7Zz1nZXRJbnQ4KGUsYSsrKTtjPWdldEludDgoZSxhKyspfWVsc2V7Zz1lW2ErK107Yz1lW2ErK119aWYoMiZzKXtuPWc7bz1jfWVsc2V7bj0wO289MH1sZXQgQz0xLGg9MSxsPTAsUT0wO2lmKDgmcyl7Qz1oPWdldEZsb2F0MjE0KGUsYSk7YSs9Mn1lbHNlIGlmKDY0JnMpe0M9Z2V0RmxvYXQyMTQoZSxhKTtoPWdldEZsb2F0MjE0KGUsYSsyKTthKz00fWVsc2UgaWYoMTI4JnMpe0M9Z2V0RmxvYXQyMTQoZSxhKTtsPWdldEZsb2F0MjE0KGUsYSsyKTtRPWdldEZsb2F0MjE0KGUsYSs0KTtoPWdldEZsb2F0MjE0KGUsYSs2KTthKz04fWNvbnN0IEU9aS5nbHlwaHNbcl07aWYoRSl7dC5hZGQodXQpO3QuYWRkKGZ0LFtDLGwsUSxoLG4sb10pO2NvbXBpbGVHbHlmKEUsdCxpKTt0LmFkZChFdCl9fXdoaWxlKDMyJnMpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxyO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLEM9W107Zm9yKDtDLmxlbmd0aDxjOyl7cz1lW2ErK107bGV0IHQ9MTs4JnMmJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylDLnB1c2goe2ZsYWdzOnN9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZDW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119Q1tpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmQ1tpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfUNbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHI7YSsrKXtjb25zdCBlPXRbYV0scj1DLnNsaWNlKGgsZSsxKTtpZigxJnJbMF0uZmxhZ3Mpci5wdXNoKHJbMF0pO2Vsc2UgaWYoMSZyLmF0KC0xKS5mbGFncylyLnVuc2hpZnQoci5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihyWzBdLngrci5hdCgtMSkueCkvMix5OihyWzBdLnkrci5hdCgtMSkueSkvMn07ci51bnNoaWZ0KGUpO3IucHVzaChlKX1tb3ZlVG8oclswXS54LHJbMF0ueSk7Zm9yKGk9MSxnPXIubGVuZ3RoO2k8ZztpKyspaWYoMSZyW2ldLmZsYWdzKWxpbmVUbyhyW2ldLngscltpXS55KTtlbHNlIGlmKDEmcltpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnkscltpKzFdLngscltpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSwocltpXS54K3JbaSsxXS54KS8yLChyW2ldLnkrcltpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQobHQsW2UsaV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGkpe3QuYWRkKEJ0LFtlLGldKX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsaSxhLHIscyxuKXt0LmFkZChodCxbZSxpLGEscixzLG5dKX1jb25zdCByPVtdO2xldCBzPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxDLGgsbCxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pfWJyZWFrO2Nhc2UgMTA6ZD1yLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixDLFEscyxRKTtjPXMrci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxDLG4scyxuKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pO2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtFPVErci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsQyxFLHMsRSk7Yz1zK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO3U9RStyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxDLHUscyxuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PW47Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUM7bj1sO01hdGguYWJzKHMtZSk+TWF0aC5hYnMobi10KT9zKz1yLnNoaWZ0KCk6bis9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtuPXIucG9wKCk7cz1yLnBvcCgpO3QuYWRkKHV0KTt0LmFkZChwdCxbcyxuXSk7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFttaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QuYWRkKEV0KTtvPWxvb2t1cENtYXAoaS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoaS5nbHlwaE5hbWVNYXBbbWlbYV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoaS5nbHlwaHNbby5nbHlwaElkXSx0LGksby5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOm8rPXIubGVuZ3RoPj4xO2crPW8rNz4+MztwPSEwO2JyZWFrO2Nhc2UgMjE6bis9ci5wb3AoKTtzKz1yLnBvcCgpO21vdmVUbyhzLG4pO3A9ITA7YnJlYWs7Y2FzZSAyMjpzKz1yLnBvcCgpO21vdmVUbyhzLG4pO3A9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO3IubGVuZ3RoPjI7KXtjPXMrci5zaGlmdCgpO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKX1zKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2JyZWFrO2Nhc2UgMjU6Zm9yKDtyLmxlbmd0aD42Oyl7cys9ci5zaGlmdCgpO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1jPXMrci5zaGlmdCgpO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKTticmVhaztjYXNlIDI2OnIubGVuZ3RoJTImJihzKz1yLnNoaWZ0KCkpO2Zvcig7ci5sZW5ndGg+MDspe2M9cztoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUM7bj1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKX1icmVhaztjYXNlIDI3OnIubGVuZ3RoJTImJihuKz1yLnNoaWZ0KCkpO2Zvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bDtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKX1icmVhaztjYXNlIDI4OnIucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNik+PjE2KTtnKz0yO2JyZWFrO2Nhc2UgMjk6ZD1yLnBvcCgpK2kuZ3N1YnJzQmlhcztmPWkuZ3N1YnJzW2RdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztjPXMrci5zaGlmdCgpO2g9bjtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7bj1sK3Iuc2hpZnQoKTtzPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbil9YnJlYWs7Y2FzZSAzMTpmb3IoO3IubGVuZ3RoPjA7KXtjPXMrci5zaGlmdCgpO2g9bjtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7bj1sK3Iuc2hpZnQoKTtzPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cztoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKX1icmVhaztkZWZhdWx0OmlmKG08MzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAke219YCk7aWYobTwyNDcpci5wdXNoKG0tMTM5KTtlbHNlIGlmKG08MjUxKXIucHVzaCgyNTYqKG0tMjQ3KStlW2crK10rMTA4KTtlbHNlIGlmKG08MjU1KXIucHVzaCgyNTYqLShtLTI1MSktZVtnKytdLTEwOCk7ZWxzZXtyLnB1c2goKGVbZ108PDI0fGVbZysxXTw8MTZ8ZVtnKzJdPDw4fGVbZyszXSkvNjU1MzYpO2crPTR9fXAmJihyLmxlbmd0aD0wKX19KGUpfWNvbnN0IGVhPVtdO2NsYXNzIENvbW1hbmRze2NtZHM9W107YWRkKGUsdCl7aWYodClpZihpc051bWJlckFycmF5KHQsbnVsbCkpdGhpcy5jbWRzLnB1c2goZSwuLi50KTtlbHNle3dhcm4oYENvbW1hbmRzLmFkZCAtICIke2V9IiBoYXMgYXQgbGVhc3Qgb25lIG5vbi1udW1iZXIgYXJnOiAiJHt0fSIuYCk7Y29uc3QgaT10Lm1hcCgoZT0+Im51bWJlciI9PXR5cGVvZiBlP2U6MCkpO3RoaXMuY21kcy5wdXNoKGUsLi4uaSl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT1Db21waWxlZEZvbnQmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb21waWxlZEZvbnQuIik7dGhpcy5mb250TWF0cml4PWU7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZD1PYmplY3QuY3JlYXRlKG51bGwpfWdldFBhdGhKcyhlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7bGV0IGEscj10aGlzLmNvbXBpbGVkR2x5cGhzW2ldO2lmKCFyKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPWVhO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWV8fDA9PT1lLmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiBlYTtsZXQgaT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7aT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHJ9ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1jb25zdCBhPW5ldyBDb21tYW5kczthLmFkZCh1dCk7YS5hZGQoZnQsaS5zbGljZSgpKTthLmFkZChkdCk7dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsYSx0KTthLmFkZChFdCk7cmV0dXJuIGEuY21kc31jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcihpfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1hfHx4aSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsaSl7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsaSl9fWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgYSxyLHMsbixvLGc7Y29uc3QgYz1nZXRVaW50MTYoaSw0KTtmb3IobGV0IGU9MCxDPTEyO2U8YztlKyssQys9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhpLnN1YmFycmF5KEMsQys0KSksYz1nZXRVaW50MzIoaSxDKzgpLGg9Z2V0VWludDMyKGksQysxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6YT1wYXJzZUNtYXAoaSxjKTticmVhaztjYXNlImdseWYiOnI9aS5zdWJhcnJheShjLGMraCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UiaGVhZCI6Zz1nZXRVaW50MTYoaSxjKzE4KTtvPWdldFVpbnQxNihpLGMrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bj1wYXJzZUNmZihpLGMsYytoLHQpfX1pZihyKXtjb25zdCB0PWc/WzEvZywwLDAsMS9nLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsaSl7bGV0IGEscjtpZihpKXthPTQ7cj1nZXRVaW50MzJ9ZWxzZXthPTI7cj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBzPVtdO2xldCBuPXIodCwwKTtmb3IobGV0IGk9YTtpPHQubGVuZ3RoO2krPWEpe2NvbnN0IGE9cih0LGkpO3MucHVzaChlLnN1YmFycmF5KG4sYSkpO249YX1yZXR1cm4gc30ocixzLG8pLGEsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG4sYSxlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX1jb25zdCB0YT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSkpO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pKX0pKSxpYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSkpO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6aSxudW1HbHlwaHM6YX0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IHI9bmV3IERhdGFWaWV3KGkuYnVmZmVyLGkuYnl0ZU9mZnNldCxpLmJ5dGVMZW5ndGgpLHM9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG49dD80OjI7bGV0IG89dD9yLmdldFVpbnQzMigwKToyKnIuZ2V0VWludDE2KDApLGc9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtnKz1uO2NvbnN0IGU9dD9yLmdldFVpbnQzMihnKToyKnIuZ2V0VWludDE2KGcpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGk9R2x5cGgucGFyc2UobyxzKTt0aGlzLmdseXBocy5wdXNoKGkpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksaT1lPjEzMTA3MCxhPWk/NDoyLHI9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKmEpKTtpP3Iuc2V0VWludDMyKDAsMCk6ci5zZXRVaW50MTYoMCwwKTtsZXQgcz0wLG49MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7cys9ZS53cml0ZShzLHQpO3M9cyszJi00O24rPWE7aT9yLnNldFVpbnQzMihuLHMpOnIuc2V0VWludDE2KG4scz4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmksbG9jYTpuZXcgVWludDhBcnJheShyLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGk9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8aTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKHtoZWFkZXI6ZT1udWxsLHNpbXBsZTp0PW51bGwsY29tcG9zaXRlczppPW51bGx9KXt0aGlzLmhlYWRlcj1lO3RoaXMuc2ltcGxlPXQ7dGhpcy5jb21wb3NpdGVzPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3RbaSxhXT1HbHlwaEhlYWRlci5wYXJzZShlLHQpO2UrPWk7aWYoYS5udW1iZXJPZkNvbnRvdXJzPDApe2NvbnN0IGk9W107Zm9yKDs7KXtjb25zdFthLHJdPUNvbXBvc2l0ZUdseXBoLnBhcnNlKGUsdCk7ZSs9YTtpLnB1c2gocik7aWYoISgzMiZyLmZsYWdzKSlicmVha31yZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxjb21wb3NpdGVzOml9KX1jb25zdCByPVNpbXBsZUdseXBoLnBhcnNlKGUsdCxhLm51bWJlck9mQ29udG91cnMpO3JldHVybiBuZXcgR2x5cGgoe2hlYWRlcjphLHNpbXBsZTpyfSl9Z2V0U2l6ZSgpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBlPXRoaXMuc2ltcGxlP3RoaXMuc2ltcGxlLmdldFNpemUoKTp0aGlzLmNvbXBvc2l0ZXMucmVkdWNlKCgoZSx0KT0+ZSt0LmdldFNpemUoKSksMCk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGk9ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgaSBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9aS53cml0ZShlLHQpO3JldHVybiBlLWl9c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWkuc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjppLHhNYXg6YSx5TWF4OnJ9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49aTt0aGlzLnhNYXg9YTt0aGlzLnlNYXg9cn1zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bMTAsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAxMH13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuIDEwfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6aX0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9aTt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8aTtyKyspe2NvbnN0IGk9dC5nZXRVaW50MTYoZSk7ZSs9MjthLnB1c2goaSl9Y29uc3Qgcj1hW2ktMV0rMSxzPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3Qgbj1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrcyk7ZSs9cztjb25zdCBvPVtdO2ZvcihsZXQgaT0wO2k8cjtlKyssaSsrKXtsZXQgYT10LmdldFVpbnQ4KGUpO28ucHVzaChhKTtpZig4JmEpe2NvbnN0IHI9dC5nZXRVaW50OCgrK2UpO2FePTg7Zm9yKGxldCBlPTA7ZTxyO2UrKylvLnB1c2goYSk7aSs9cn19Y29uc3QgZz1bXTtsZXQgYz1bXSxDPVtdLGg9W107Y29uc3QgbD1bXTtsZXQgUT0wLEU9MDtmb3IobGV0IGk9MDtpPHI7aSsrKXtjb25zdCByPW9baV07aWYoMiZyKXtjb25zdCBpPXQuZ2V0VWludDgoZSsrKTtFKz0xNiZyP2k6LWk7Yy5wdXNoKEUpfWVsc2UgaWYoMTYmciljLnB1c2goRSk7ZWxzZXtFKz10LmdldEludDE2KGUpO2UrPTI7Yy5wdXNoKEUpfWlmKGFbUV09PT1pKXtRKys7Zy5wdXNoKGMpO2M9W119fUU9MDtRPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDQmcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MzImcj9pOi1pO0MucHVzaChFKX1lbHNlIGlmKDMyJnIpQy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO0MucHVzaChFKX1oLnB1c2goMSZyfDY0JnIpO2lmKGFbUV09PT1pKXtjPWdbUV07USsrO2wucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6aCx4Q29vcmRpbmF0ZXM6Yyx5Q29vcmRpbmF0ZXM6Q30pKTtDPVtdO2g9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOmwsaW5zdHJ1Y3Rpb25zOm59KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsaT0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2UrPWEuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgcj0wLHM9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9YS54Q29vcmRpbmF0ZXNbcl0sbj1hLnlDb29yZGluYXRlc1tyXTtsZXQgbz1NYXRoLmFicyhzLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1zO289TWF0aC5hYnMobi1pKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO2k9bn19cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWUsYT1bXSxyPVtdLHM9W107bGV0IG49MCxvPTA7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1pLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9aS5mbGFnc1tlXTtjb25zdCBnPWkueENvb3JkaW5hdGVzW2VdO2xldCBjPWctbjtpZigwPT09Yyl7dHw9MTY7YS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhjKTtpZihlPD0yNTUpe3R8PWM+PTA/MTg6MjthLnB1c2goZSl9ZWxzZSBhLnB1c2goYyl9bj1nO2NvbnN0IEM9aS55Q29vcmRpbmF0ZXNbZV07Yz1DLW87aWYoMD09PWMpe3R8PTMyO3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzM2OjQ7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGMpfW89QztzLnB1c2godCl9dC5zZXRVaW50MTYoZSxhLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBpIG9mIHMpdC5zZXRVaW50OChlKyssaSk7Zm9yKGxldCBpPTAscj1hLmxlbmd0aDtpPHI7aSsrKXtjb25zdCByPWFbaV0sbj1zW2ldO2lmKDImbil0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMTYmbikpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1mb3IobGV0IGk9MCxhPXIubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9cltpXSxuPXNbaV07aWYoNCZuKXQuc2V0VWludDgoZSsrLGEpO2Vsc2UgaWYoISgzMiZuKSl7dC5zZXRJbnQxNihlLGEpO2UrPTJ9fXJldHVybiBlLWl9c2NhbGUoZSx0KXtmb3IoY29uc3QgaSBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1pLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCBhPTAscj1pLnhDb29yZGluYXRlcy5sZW5ndGg7YTxyO2ErKylpLnhDb29yZGluYXRlc1thXT1NYXRoLnJvdW5kKGUrKGkueENvb3JkaW5hdGVzW2FdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOmksYXJndW1lbnQyOmEsdHJhbnNmOnIsaW5zdHJ1Y3Rpb25zOnN9KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9aTt0aGlzLmFyZ3VtZW50Mj1hO3RoaXMudHJhbnNmPXI7dGhpcy5pbnN0cnVjdGlvbnM9c31zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBpPWUsYT1bXTtsZXQgcj10LmdldFVpbnQxNihlKTtjb25zdCBzPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgbixvO2lmKDEmcil7aWYoMiZyKXtuPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtuPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O3JePTF9ZWxzZXtpZigyJnIpe249dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtuPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgZz1udWxsO2lmKDI1NiZyKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7Zz1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUraSk7ZSs9aX1yZXR1cm5bZS1pLG5ldyBDb21wb3NpdGVHbHlwaCh7ZmxhZ3M6cixnbHlwaEluZGV4OnMsYXJndW1lbnQxOm4sYXJndW1lbnQyOm8sdHJhbnNmOmEsaW5zdHJ1Y3Rpb25zOmd9KV19Z2V0U2l6ZSgpe2xldCBlPTQrMip0aGlzLnRyYW5zZi5sZW5ndGg7MjU2JnRoaXMuZmxhZ3MmJihlKz0yK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwoZSs9Mik6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwoZSs9Mik7cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWU7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpO3Quc2V0VWludDE2KGUsdGhpcy5mbGFncyk7dC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCk7ZSs9NDtpZigxJnRoaXMuZmxhZ3Mpe2lmKDImdGhpcy5mbGFncyl7dC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZWxzZXt0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWUrPTR9ZWxzZXt0LnNldFVpbnQ4KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDgoZSsxLHRoaXMuYXJndW1lbnQyKTtlKz0yfWlmKDI1NiZ0aGlzLmZsYWdzKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtaX1zY2FsZShlLHQpe319ZnVuY3Rpb24gd3JpdGVJbnQxNihlLHQsaSl7ZVt0XT1pPj44JjI1NTtlW3QrMV09MjU1Jml9ZnVuY3Rpb24gd3JpdGVJbnQzMihlLHQsaSl7ZVt0XT1pPj4yNCYyNTU7ZVt0KzFdPWk+PjE2JjI1NTtlW3QrMl09aT4+OCYyNTU7ZVt0KzNdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlRGF0YShlLHQsaSl7aWYoaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpZS5zZXQoaSx0KTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgaSlmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspZVt0KytdPTI1NSZpLmNoYXJDb2RlQXQoYSk7ZWxzZSBmb3IoY29uc3QgYSBvZiBpKWVbdCsrXT0yNTUmYX1jbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lO3RoaXMudGFibGVzPU9iamVjdC5jcmVhdGUobnVsbCl9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBpPTEsYT0wO2Zvcig7KGleZSk+aTspe2k8PD0xO2ErK31jb25zdCByPWkqdDtyZXR1cm57cmFuZ2U6cixlbnRyeTphLHJhbmdlU2hpZnQ6dCplLXJ9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLnRhYmxlcyxpPU9iamVjdC5rZXlzKHQpO2kuc29ydCgpO2NvbnN0IGE9aS5sZW5ndGg7bGV0IHIscyxuLG8sZyxjPTEyKzE2KmE7Y29uc3QgQz1bY107Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07Yys9KG8ubGVuZ3RoKzMmLTQpPj4+MDtDLnB1c2goYyl9Y29uc3QgaD1uZXcgVWludDhBcnJheShjKTtmb3Iocj0wO3I8YTtyKyspe289dFtpW3JdXTt3cml0ZURhdGEoaCxDW3JdLG8pfSJ0cnVlIj09PWUmJihlPXN0cmluZzMyKDY1NTM2KSk7aFswXT0yNTUmZS5jaGFyQ29kZUF0KDApO2hbMV09MjU1JmUuY2hhckNvZGVBdCgxKTtoWzJdPTI1NSZlLmNoYXJDb2RlQXQoMik7aFszXT0yNTUmZS5jaGFyQ29kZUF0KDMpO3dyaXRlSW50MTYoaCw0LGEpO2NvbnN0IGw9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoYSwxNik7d3JpdGVJbnQxNihoLDYsbC5yYW5nZSk7d3JpdGVJbnQxNihoLDgsbC5lbnRyeSk7d3JpdGVJbnQxNihoLDEwLGwucmFuZ2VTaGlmdCk7Yz0xMjtmb3Iocj0wO3I8YTtyKyspe2c9aVtyXTtoW2NdPTI1NSZnLmNoYXJDb2RlQXQoMCk7aFtjKzFdPTI1NSZnLmNoYXJDb2RlQXQoMSk7aFtjKzJdPTI1NSZnLmNoYXJDb2RlQXQoMik7aFtjKzNdPTI1NSZnLmNoYXJDb2RlQXQoMyk7bGV0IGU9MDtmb3Iocz1DW3JdLG49Q1tyKzFdO3M8bjtzKz00KXtlPWUrcmVhZFVpbnQzMihoLHMpPj4+MH13cml0ZUludDMyKGgsYys0LGUpO3dyaXRlSW50MzIoaCxjKzgsQ1tyXSk7d3JpdGVJbnQzMihoLGMrMTIsdFtnXS5sZW5ndGgpO2MrPTE2fXJldHVybiBofWFkZFRhYmxlKGUsdCl7aWYoZSBpbiB0aGlzLnRhYmxlcyl0aHJvdyBuZXcgRXJyb3IoIlRhYmxlICIrZSsiIGFscmVhZHkgZXhpc3RzIik7dGhpcy50YWJsZXNbZV09dH19Y29uc3QgYWE9WzRdLHJhPVs1XSxzYT1bNl0sbmE9WzddLG9hPVs4XSxnYT1bMTIsMzVdLElhPVsxNF0sY2E9WzIxXSxDYT1bMjJdLGhhPVszMF0sbGE9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTA7dGhpcy5sc2I9MDt0aGlzLmZsZXhpbmc9ITE7dGhpcy5vdXRwdXQ9W107dGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxpKXtjb25zdCBhPWUubGVuZ3RoO2xldCByLHMsbixvPSExO2ZvcihsZXQgZz0wO2c8YTtnKyspe2xldCBhPWVbZ107aWYoYTwzMil7MTI9PT1hJiYoYT0oYTw8OCkrZVsrK2ddKTtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsYWEpO2JyZWFrO2Nhc2UgNTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixyYSk7YnJlYWs7Y2FzZSA2Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHNhKTticmVhaztjYXNlIDc6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbmEpO2JyZWFrO2Nhc2UgODpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNixvYSk7YnJlYWs7Y2FzZSAxMDppZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtpZighdFtuXSl7bz0hMDticmVha31vPXRoaXMuY29udmVydCh0W25dLHQsaSk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gbztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9cj10aGlzLnN0YWNrLnBvcCgpO3M9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1zO3RoaXMud2lkdGg9cjt0aGlzLnN0YWNrLnB1c2gocixzKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixDYSk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKElhWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhaztvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjYSk7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxDYSk7YnJlYWs7Y2FzZSAzMDpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxoYSk7YnJlYWs7Y2FzZSAzMTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxsYSk7YnJlYWs7Y2FzZSAzMDc4OmlmKGkpe2NvbnN0IGU9dGhpcy5zdGFjay5hdCgtNSk7dGhpcy5zZWFjPXRoaXMuc3RhY2suc3BsaWNlKC00LDQpO3RoaXMuc2VhY1swXSs9dGhpcy5sc2ItZTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMCxJYSl9ZWxzZSBvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxJYSk7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe289ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtyPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3M9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1zO3RoaXMud2lkdGg9cjt0aGlzLnN0YWNrLnB1c2gocixzLGUpO289dGhpcy5leGVjdXRlQ29tbWFuZCgzLGNhKTticmVhaztjYXNlIDMwODQ6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31jb25zdCBnPXRoaXMuc3RhY2sucG9wKCksYz10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChjL2cpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtjb25zdCBDPXRoaXMuc3RhY2sucG9wKCk7aWYoMD09PW4mJjM9PT1DKXtjb25zdCBlPXRoaXMuc3RhY2suc3BsaWNlKC0xNywxNyk7dGhpcy5zdGFjay5wdXNoKGVbMl0rZVswXSxlWzNdK2VbMV0sZVs0XSxlWzVdLGVbNl0sZVs3XSxlWzhdLGVbOV0sZVsxMF0sZVsxMV0sZVsxMl0sZVsxM10sZVsxNF0pO289dGhpcy5leGVjdXRlQ29tbWFuZCgxMyxnYSwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09biYmMD09PUMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0Ondhcm4oJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJythKyciJyl9aWYobylicmVha31lbHNle2E8PTI0Nj9hLT0xMzk6YT1hPD0yNTA/MjU2KihhLTI0NykrZVsrK2ddKzEwODphPD0yNTQ/LTI1NiooYS0yNTEpLWVbKytnXS0xMDg6KDI1NSZlWysrZ10pPDwyNHwoMjU1JmVbKytnXSk8PDE2fCgyNTUmZVsrK2ddKTw8OHwoMjU1JmVbKytnXSk8PDA7dGhpcy5zdGFjay5wdXNoKGEpfX1yZXR1cm4gb31leGVjdXRlQ29tbWFuZChlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmxlbmd0aDtpZihlPmEpcmV0dXJuITA7Y29uc3Qgcj1hLWU7Zm9yKGxldCBlPXI7ZTxhO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7aT90aGlzLnN0YWNrLnNwbGljZShyLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGkpe2lmKGk+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgYSxyLHM9MHx0O2ZvcihhPTA7YTxpO2ErKylzPTUyODQ1KihlW2FdK3MpKzIyNzE5JjY1NTM1O2NvbnN0IG49ZS5sZW5ndGgtaSxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihhPWkscj0wO3I8bjthKysscisrKXtjb25zdCB0PWVbYV07b1tyXT10XnM+Pjg7cz01Mjg0NSoodCtzKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxpKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxpPSEoKGlzSGV4RGlnaXQodFswXSl8fGlzV2hpdGVTcGFjZSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IFN0cmVhbShpP2RlY3J5cHQodCw1NTY2NSw0KTpmdW5jdGlvbiBkZWNyeXB0QXNjaWkoZSx0LGkpe2xldCBhPTB8dDtjb25zdCByPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocj4+PjEpO2xldCBuLG87Zm9yKG49MCxvPTA7bjxyO24rKyl7Y29uc3QgdD1lW25dO2lmKCFpc0hleERpZ2l0KHQpKWNvbnRpbnVlO24rKztsZXQgaTtmb3IoO248ciYmIWlzSGV4RGlnaXQoaT1lW25dKTspbisrO2lmKG48cil7Y29uc3QgZT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsaSksMTYpO3NbbysrXT1lXmE+Pjg7YT01Mjg0NSooZSthKSsyMjcxOSY2NTUzNX19cmV0dXJuIHMuc2xpY2UoaSxvKX0odCw1NTY2NSw0KSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhaTt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKX1yZWFkTnVtYmVyQXJyYXkoKXt0aGlzLmdldFRva2VuKCk7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10fHwiXSI9PT10fHwifSI9PT10KWJyZWFrO2UucHVzaChwYXJzZUZsb2F0KHR8fDApKX1yZXR1cm4gZX1yZWFkTnVtYmVyKCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9cmVhZEludCgpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiAwfHBhcnNlSW50KGV8fDAsMTApfXJlYWRCb29sZWFuKCl7cmV0dXJuInRydWUiPT09dGhpcy5nZXRUb2tlbigpPzE6MH1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wcmV2Q2hhcigpe3RoaXMuc3RyZWFtLnNraXAoLTIpO3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoaXNTcGVjaWFsKHQpKXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9bGV0IGk9IiI7ZG97aSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhaXNXaGl0ZVNwYWNlKHQpJiYhaXNTcGVjaWFsKHQpKTtyZXR1cm4gaX1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTpkZWNyeXB0KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPVtdLGE9W10scj1PYmplY3QuY3JlYXRlKG51bGwpO3IubGVuSVY9NDtjb25zdCBzPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpyfX07bGV0IG4sbyxnLGM7Zm9yKDtudWxsIT09KG49dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09bil7bj10aGlzLmdldFRva2VuKCk7c3dpdGNoKG4pe2Nhc2UiQ2hhclN0cmluZ3MiOnRoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOzspe249dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT1ufHwiZW5kIj09PW4pYnJlYWs7aWYoIi8iIT09biljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtnPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2M9cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IGk9dGhpcy5yZWFkQ2hhclN0cmluZ3MoZyxjKTt0aGlzLm5leHRDaGFyKCk7bj10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PW4/dGhpcy5nZXRUb2tlbigpOiIvIj09PW4mJnRoaXMucHJldkNoYXIoKTthLnB1c2goe2dseXBoOmUsZW5jb2RlZDppfSl9YnJlYWs7Y2FzZSJTdWJycyI6dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09biYmdGhpcy5nZXRUb2tlbigpO2lbZV09YX1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjpjb25zdCBlPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5sZW5ndGg+MCYmZS5sZW5ndGgsMDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKXx8LjA2O2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkQm9vbGVhbigpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOnJ9b2YgYSl7Y29uc3QgYT1uZXcgVHlwZTFDaGFyU3RyaW5nLG49YS5jb252ZXJ0KHQsaSx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO2xldCBvPWEub3V0cHV0O24mJihvPVsxNF0pO2NvbnN0IGc9e2dseXBoTmFtZTpyLGNoYXJzdHJpbmc6byx3aWR0aDphLndpZHRoLGxzYjphLmxzYixzZWFjOmEuc2VhY307Ii5ub3RkZWYiPT09cj9zLmNoYXJzdHJpbmdzLnVuc2hpZnQoZyk6cy5jaGFyc3RyaW5ncy5wdXNoKGcpO2lmKGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2Yocik7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09YS53aWR0aCl9fXJldHVybiBzfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IGk9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9aTticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtsZXQgcjtpZigvXlxkKyQvLnRlc3QoYSkpe3I9W107Y29uc3QgZT0wfHBhcnNlSW50KGEsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IGk9MDtpPGU7aSsrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBpPXRoaXMuZ2V0VG9rZW4oKTtyW2VdPWk7dGhpcy5nZXRUb2tlbigpfX1lbHNlIHI9Z2V0RW5jb2RpbmcoYSk7ZS5idWlsdEluRW5jb2Rpbmc9cjticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCBzPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoc1szXSxzWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oc1sxXSxzWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LGkpe2NvbnN0IGE9ZS5sZW5ndGgscj10Lmxlbmd0aCxzPWEtcjtsZXQgbj1pLG89ITE7Zm9yKDtuPHM7KXtsZXQgaT0wO2Zvcig7aTxyJiZlW24raV09PT10W2ldOylpKys7aWYoaT49cil7bis9aTtmb3IoO248YSYmaXNXaGl0ZVNwYWNlKGVbbl0pOyluKys7bz0hMDticmVha31uKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOm59fWNsYXNzIFR5cGUxRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7bGV0IGE9aS5sZW5ndGgxLHI9aS5sZW5ndGgyLHM9dC5wZWVrQnl0ZXMoNik7Y29uc3Qgbj0xMjg9PT1zWzBdJiYxPT09c1sxXTtpZihuKXt0LnNraXAoNik7YT1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRIZWFkZXJCbG9jayhlLHQpe2NvbnN0IGk9WzEwMSwxMDEsMTIwLDEwMSw5OV0sYT1lLnBvcztsZXQgcixzLG4sbzt0cnl7cj1lLmdldEJ5dGVzKHQpO3M9ci5sZW5ndGh9Y2F0Y2h7fWlmKHM9PT10KXtuPWZpbmRCbG9jayhyLGksdC0yKmkubGVuZ3RoKTtpZihuLmZvdW5kJiZuLmxlbmd0aD09PXQpcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKHIpLGxlbmd0aDp0fX13YXJuKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPWE7Zm9yKDs7KXtuPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxpLDApO2lmKDA9PT1uLmxlbmd0aClicmVhaztlLnBvcys9bi5sZW5ndGg7aWYobi5mb3VuZCl7bz1lLnBvcy1hO2JyZWFrfX1lLnBvcz1hO2lmKG8pcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXMobykpLGxlbmd0aDpvfTt3YXJuKCdVbmFibGUgdG8gcmVjb3ZlciAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB1c2luZyBhcyBpcy4nKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9fSh0LGEpO25ldyBUeXBlMVBhcnNlcihvLnN0cmVhbSwhMSxUaSkuZXh0cmFjdEZvbnRIZWFkZXIoaSk7aWYobil7cz10LmdldEJ5dGVzKDYpO3I9c1s1XTw8MjR8c1s0XTw8MTZ8c1szXTw8OHxzWzJdfWNvbnN0IGc9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGk9ZS5nZXRCeXRlcygpO2lmKDA9PT1pLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImdldEVleGVjQmxvY2sgLSBubyBmb250IHByb2dyYW0gZm91bmQuIik7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGkpLGxlbmd0aDppLmxlbmd0aH19KHQpLGM9bmV3IFR5cGUxUGFyc2VyKGcuc3RyZWFtLCEwLFRpKS5leHRyYWN0Rm9udFByb2dyYW0oaSk7Zm9yKGNvbnN0IGUgaW4gYy5wcm9wZXJ0aWVzKWlbZV09Yy5wcm9wZXJ0aWVzW2VdO2NvbnN0IEM9Yy5jaGFyc3RyaW5ncyxoPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhDKSxsPXRoaXMuZ2V0VHlwZTJTdWJycyhjLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPUM7dGhpcy5kYXRhPXRoaXMud3JhcChlLGgsdGhpcy5jaGFyc3RyaW5ncyxsLGkpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhjLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2lbZS5jTWFwLmNoYXJDb2RlT2YoYSldPWErMX1yZXR1cm4gaX1jb25zdCBpPVsiLm5vdGRlZiJdO2xldCBhLHI7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylpLnB1c2godFtyXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7YT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe3I9aS5pbmRleE9mKHNbZV0pO3I+PTAmJihhW2VdPXIpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsYSxpKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07YS5zZWFjJiYodFtpKzFdPWEuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpdC5wdXNoKGkuY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IGk9ZS5sZW5ndGg7dD1pPDExMzM/MTA3Omk8MzM3Njk/MTEzMTozMjc2ODtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjx0O3IrKylhLnB1c2goWzExXSk7Zm9yKHI9MDtyPGk7cisrKWEucHVzaChlW3JdKTtyZXR1cm4gYX13cmFwKGUsdCxpLGEscil7Y29uc3Qgcz1uZXcgQ0ZGO3MuaGVhZGVyPW5ldyBDRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbj1uZXcgQ0ZGVG9wRGljdDtuLnNldEJ5TmFtZSgidmVyc2lvbiIsMzkxKTtuLnNldEJ5TmFtZSgiTm90aWNlIiwzOTIpO24uc2V0QnlOYW1lKCJGdWxsTmFtZSIsMzkzKTtuLnNldEJ5TmFtZSgiRmFtaWx5TmFtZSIsMzk0KTtuLnNldEJ5TmFtZSgiV2VpZ2h0IiwzOTUpO24uc2V0QnlOYW1lKCJFbmNvZGluZyIsbnVsbCk7bi5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLHIuZm9udE1hdHJpeCk7bi5zZXRCeU5hbWUoIkZvbnRCQm94IixyLmJib3gpO24uc2V0QnlOYW1lKCJjaGFyc2V0IixudWxsKTtuLnNldEJ5TmFtZSgiQ2hhclN0cmluZ3MiLG51bGwpO24uc2V0QnlOYW1lKCJQcml2YXRlIixudWxsKTtzLnRvcERpY3Q9bjtjb25zdCBvPW5ldyBDRkZTdHJpbmdzO28uYWRkKCJWZXJzaW9uIDAuMTEiKTtvLmFkZCgiU2VlIG9yaWdpbmFsIG5vdGljZSIpO28uYWRkKGUpO28uYWRkKGUpO28uYWRkKCJNZWRpdW0iKTtzLnN0cmluZ3M9bztzLmdsb2JhbFN1YnJJbmRleD1uZXcgQ0ZGSW5kZXg7Y29uc3QgZz10Lmxlbmd0aCxjPVsiLm5vdGRlZiJdO2xldCBDLGg7Zm9yKEM9MDtDPGc7QysrKXtjb25zdCBlPWlbQ10uZ2x5cGhOYW1lOy0xPT09RGkuaW5kZXhPZihlKSYmby5hZGQoZSk7Yy5wdXNoKGUpfXMuY2hhcnNldD1uZXcgQ0ZGQ2hhcnNldCghMSwwLGMpO2NvbnN0IGw9bmV3IENGRkluZGV4O2wuYWRkKFsxMzksMTRdKTtmb3IoQz0wO0M8ZztDKyspbC5hZGQodFtDXSk7cy5jaGFyU3RyaW5ncz1sO2NvbnN0IFE9bmV3IENGRlByaXZhdGVEaWN0O1Euc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgRT1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2ZvcihDPTAsaD1FLmxlbmd0aDtDPGg7QysrKXtjb25zdCBlPUVbQ107aWYoIShlIGluIHIucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9ci5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO1Euc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PVE7Y29uc3QgdT1uZXcgQ0ZGSW5kZXg7Zm9yKEM9MCxoPWEubGVuZ3RoO0M8aDtDKyspdS5hZGQoYVtDXSk7US5zdWJyc0luZGV4PXU7cmV0dXJuIG5ldyBDRkZDb21waWxlcihzKS5jb21waWxlKCl9fWNvbnN0IEJhPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxRYT0xZTMsRWE9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3VidHlwZSIsInN5c3RlbUZvbnRJbmZvIiwidHlwZSIsInZlcnRpY2FsIl0sdWE9WyJjTWFwIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gYWRqdXN0V2lkdGhzKGUpe2lmKCFlLmZvbnRNYXRyaXgpcmV0dXJuO2lmKGUuZm9udE1hdHJpeFswXT09PXJbMF0pcmV0dXJuO2NvbnN0IHQ9LjAwMS9lLmZvbnRNYXRyaXhbMF0saT1lLndpZHRocztmb3IoY29uc3QgZSBpbiBpKWlbZV0qPXQ7ZS5kZWZhdWx0V2lkdGgqPXR9ZnVuY3Rpb24gYW1lbmRGYWxsYmFja1RvVW5pY29kZShlKXtpZighZS5mYWxsYmFja1RvVW5pY29kZSlyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBpbiBlLmZhbGxiYWNrVG9Vbmljb2RlKWUudG9Vbmljb2RlLmhhcyhpKXx8KHRbaV09ZS5mYWxsYmFja1RvVW5pY29kZVtpXSk7dC5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgZm9udHNfR2x5cGh7Y29uc3RydWN0b3IoZSx0LGksYSxyLHMsbixvLGcpe3RoaXMub3JpZ2luYWxDaGFyQ29kZT1lO3RoaXMuZm9udENoYXI9dDt0aGlzLnVuaWNvZGU9aTt0aGlzLmFjY2VudD1hO3RoaXMud2lkdGg9cjt0aGlzLnZtZXRyaWM9czt0aGlzLm9wZXJhdG9yTGlzdElkPW47dGhpcy5pc1NwYWNlPW87dGhpcy5pc0luRm9udD1nfWdldCBjYXRlZ29yeSgpe3JldHVybiBzaGFkb3codGhpcywiY2F0ZWdvcnkiLGZ1bmN0aW9uIGdldENoYXJVbmljb2RlQ2F0ZWdvcnkoZSl7Y29uc3QgdD12aS5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPWUubWF0Y2goWWkpLGE9e2lzV2hpdGVzcGFjZTohIWk/LlsxXSxpc1plcm9XaWR0aERpYWNyaXRpYzohIWk/LlsyXSxpc0ludmlzaWJsZUZvcm1hdE1hcms6ISFpPy5bM119O3ZpLnNldChlLGEpO3JldHVybiBhfSh0aGlzLnVuaWNvZGUpLCEwKX19ZnVuY3Rpb24gaW50MTYoZSx0KXtyZXR1cm4oZTw8OCkrdH1mdW5jdGlvbiB3cml0ZVNpZ25lZEludDE2KGUsdCxpKXtlW3QrMV09aTtlW3RdPWk+Pj44fWZ1bmN0aW9uIHNpZ25lZEludDE2KGUsdCl7Y29uc3QgaT0oZTw8OCkrdDtyZXR1cm4gMzI3NjgmaT9pLTY1NTM2Oml9ZnVuY3Rpb24gc3RyaW5nMTYoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIHNhZmVTdHJpbmcxNihlKXtlPjMyNzY3P2U9MzI3Njc6ZTwtMzI3NjgmJihlPS0zMjc2OCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6aSxjb21wb3NpdGU6YX0pe2xldCByLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT1yZWFkVWludDMyKHQsMCl8fCJ0cnVlIj09PWJ5dGVzVG9TdHJpbmcodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpcj1hPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtyZXR1cm4iT1RUTyI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX0oZSkpcj1hPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc1R5cGUxRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpKXI9YT8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO2Vsc2UgaWYoZnVuY3Rpb24gaXNDRkZGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpKWlmKGEpe3I9IkNJREZvbnRUeXBlMCI7cz0iQ0lERm9udFR5cGUwQyJ9ZWxzZXtyPSJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7cz0iVHlwZTFDIn1lbHNle3dhcm4oImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIik7cj10O3M9aX1yZXR1cm5bcixzXX1mdW5jdGlvbiBhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGUsdCl7Zm9yKGNvbnN0IGkgaW4gdCllWytpXT10W2ldfWZ1bmN0aW9uIGJ1aWxkVG9Gb250Q2hhcihlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcjtmb3IobGV0IGk9MCxzPWUubGVuZ3RoO2k8cztpKyspe3I9Z2V0VW5pY29kZUZvckdseXBoKGVbaV0sdCk7LTEhPT1yJiYoYVtpXT1yKX1mb3IoY29uc3QgZSBpbiBpKXtyPWdldFVuaWNvZGVGb3JHbHlwaChpW2VdLHQpOy0xIT09ciYmKGFbK2VdPXIpfXJldHVybiBhfWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsaT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3QgYT1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGEpO3dhcm4oYSk7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsaSxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCkscz1uZXcgTWFwLG49W10sbz1uZXcgU2V0O2xldCBnPTA7bGV0IGM9QmFbZ11bMF0sQz1CYVtnXVsxXTtmb3IoY29uc3QgbCBpbiBlKXtsZXQgUT1lW2xdO2lmKCF0KFEpKWNvbnRpbnVlO2lmKGM+Qyl7ZysrO2lmKGc+PUJhLmxlbmd0aCl7d2FybigiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9Yz1CYVtnXVswXTtDPUJhW2ddWzFdfWNvbnN0IEU9YysrOzA9PT1RJiYoUT1pKTtsZXQgdT1hLmdldChsKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PXUuY29kZVBvaW50QXQoMCkpO2lmKHUmJiEoaD11LEJhWzBdWzBdPD1oJiZoPD1CYVswXVsxXXx8QmFbMV1bMF08PWgmJmg8PUJhWzFdWzFdKSYmIW8uaGFzKFEpKXtzLnNldCh1LFEpO28uYWRkKFEpfXJbRV09UTtuW2xdPUV9dmFyIGg7cmV0dXJue3RvRm9udENoYXI6bixjaGFyQ29kZVRvR2x5cGhJZDpyLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTpjfX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGkpe2NvbnN0IGE9ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxpKXtjb25zdCBhPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Uscl1vZiB0KXI+PWl8fGEucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpyfSk7MD09PWEubGVuZ3RoJiZhLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO2Euc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgcj1bXSxzPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8czspe2NvbnN0IHQ9YVtlXS5mb250Q2hhckNvZGUsaT1bYVtlXS5nbHlwaElkXTsrK2U7bGV0IG49dDtmb3IoO2U8cyYmbisxPT09YVtlXS5mb250Q2hhckNvZGU7KXtpLnB1c2goYVtlXS5nbHlwaElkKTsrK247KytlO2lmKDY1NTM1PT09bilicmVha31yLnB1c2goW3QsbixpXSl9cmV0dXJuIHJ9KGUsdCxpKSxyPWEuYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxuLG8sZyxjPSJcMFwwIitzdHJpbmcxNihyKSsiXDADXDABIitzdHJpbmczMig0Kzgqcik7Zm9yKHM9YS5sZW5ndGgtMTtzPj0wJiYhKGFbc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IEM9cysxO2Fbc11bMF08NjU1MzUmJjY1NTM1PT09YVtzXVsxXSYmKGFbc11bMV09NjU1MzQpO2NvbnN0IGg9YVtzXVsxXTw2NTUzNT8xOjAsbD1DK2gsUT1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhsLDIpO2xldCBFLHUsZCxmLHA9IiIsbT0iIix5PSIiLHc9IiIsYj0iIixEPTA7Zm9yKHM9MCxuPUM7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtkPUVbMV07cCs9c3RyaW5nMTYodSk7bSs9c3RyaW5nMTYoZCk7Zj1FWzJdO2xldCBlPSEwO2ZvcihvPTEsZz1mLmxlbmd0aDtvPGc7KytvKWlmKGZbb10hPT1mW28tMV0rMSl7ZT0hMTticmVha31pZihlKXt5Kz1zdHJpbmcxNihmWzBdLXUmNjU1MzUpO3crPXN0cmluZzE2KDApfWVsc2V7Y29uc3QgZT0yKihsLXMpKzIqRDtEKz1kLXUrMTt5Kz1zdHJpbmcxNigwKTt3Kz1zdHJpbmcxNihlKTtmb3Iobz0wLGc9Zi5sZW5ndGg7bzxnOysrbyliKz1zdHJpbmcxNihmW29dKX19aWYoaD4wKXttKz0iw7/DvyI7cCs9IsO/w78iO3krPSJcMAEiO3crPSJcMFwwIn1jb25zdCBTPSJcMFwwIitzdHJpbmcxNigyKmwpK3N0cmluZzE2KFEucmFuZ2UpK3N0cmluZzE2KFEuZW50cnkpK3N0cmluZzE2KFEucmFuZ2VTaGlmdCkrbSsiXDBcMCIrcCt5K3crYjtsZXQgaz0iIixSPSIiO2lmKHI+MSl7Yys9IlwwA1wwXG4iK3N0cmluZzMyKDQrOCpyKzQrUy5sZW5ndGgpO2s9IiI7Zm9yKHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspe0U9YVtzXTt1PUVbMF07Zj1FWzJdO2xldCBlPWZbMF07Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtkPUVbMF0rby0xO2srPXN0cmluZzMyKHUpK3N0cmluZzMyKGQpK3N0cmluZzMyKGUpO3U9ZCsxO2U9ZltvXX1rKz1zdHJpbmczMih1KStzdHJpbmczMihFWzFdKStzdHJpbmczMihlKX1SPSJcMFxmXDBcMCIrc3RyaW5nMzIoay5sZW5ndGgrMTYpKyJcMFwwXDBcMCIrc3RyaW5nMzIoay5sZW5ndGgvMTIpfXJldHVybiBjKyJcMAQiK3N0cmluZzE2KFMubGVuZ3RoKzQpK1MrUitrfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxpKXtpfHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IGE9MCxyPTAscz0wLG49MCxvPW51bGwsZz0wLGM9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KG8+ZXx8IW8pJiYobz1lKTtnPGUmJihnPWUpO2M9Z2V0VW5pY29kZVJhbmdlRm9yKGUsYyk7aWYoYzwzMilhfD0xPDxjO2Vsc2UgaWYoYzw2NClyfD0xPDxjLTMyO2Vsc2UgaWYoYzw5NilzfD0xPDxjLTY0O2Vsc2V7aWYoIShjPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtufD0xPDxjLTk2fX1nPjY1NTM1JiYoZz02NTUzNSl9ZWxzZXtvPTA7Zz0yNTV9Y29uc3QgQz1lLmJib3h8fFswLDAsMCwwXSxoPWkudW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksbD1lLmFzY2VudFNjYWxlZD8xOmgvUWEsUT1pLmFzY2VudHx8TWF0aC5yb3VuZChsKihlLmFzY2VudHx8Q1szXSkpO2xldCBFPWkuZGVzY2VudHx8TWF0aC5yb3VuZChsKihlLmRlc2NlbnR8fENbMV0pKTtFPjAmJmUuZGVzY2VudD4wJiZDWzFdPDAmJihFPS1FKTtjb25zdCB1PWkueU1heHx8USxkPS1pLnlNaW58fC1FO3JldHVybiJcMAMCJAHDtFwwBVwwXDACwooCwrtcMFwwXDDCjALCigLCu1wwXDABw59ceDAwMQECXDBcMFwwXDAGIitTdHJpbmcuZnJvbUNoYXJDb2RlKGUuZml4ZWRQaXRjaD85OjApKyJcMFwwXDBcMFwwXDAiK3N0cmluZzMyKGEpK3N0cmluZzMyKHIpK3N0cmluZzMyKHMpK3N0cmluZzMyKG4pKyIqMjEqIitzdHJpbmcxNihlLml0YWxpY0FuZ2xlPzE6MCkrc3RyaW5nMTYob3x8ZS5maXJzdENoYXIpK3N0cmluZzE2KGd8fGUubGFzdENoYXIpK3N0cmluZzE2KFEpK3N0cmluZzE2KEUpKyJcMGQiK3N0cmluZzE2KHUpK3N0cmluZzE2KGQpKyJcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihlLnhIZWlnaHQpK3N0cmluZzE2KGUuY2FwSGVpZ2h0KStzdHJpbmcxNigwKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrIlwwAyJ9ZnVuY3Rpb24gY3JlYXRlUG9zdFRhYmxlKGUpe3JldHVybiJcMANcMFwwIitzdHJpbmczMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKSsiXDBcMFwwXDAiK3N0cmluZzMyKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgaT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYT1bXTtsZXQgcixzLG4sbyxnO2ZvcihyPTAscz1pLmxlbmd0aDtyPHM7cisrKXtnPXRbMV1bcl18fGlbcl07Y29uc3QgZT1bXTtmb3Iobj0wLG89Zy5sZW5ndGg7bjxvO24rKyllLnB1c2goc3RyaW5nMTYoZy5jaGFyQ29kZUF0KG4pKSk7YS5wdXNoKGUuam9pbigiIikpfWNvbnN0IGM9W2ksYV0sQz1bIlwwASIsIlwwAyJdLGg9WyJcMFwwIiwiXDABIl0sbD1bIlwwXDAiLCIEXHQiXSxRPWkubGVuZ3RoKkMubGVuZ3RoO2xldCBFPSJcMFwwIitzdHJpbmcxNihRKStzdHJpbmcxNigxMipRKzYpLHU9MDtmb3Iocj0wLHM9Qy5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgZT1jW3JdO2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKXtnPWVbbl07RSs9Q1tyXStoW3JdK2xbcl0rc3RyaW5nMTYobikrc3RyaW5nMTYoZy5sZW5ndGgpK3N0cmluZzE2KHUpO3UrPWcubGVuZ3RofX1FKz1pLmpvaW4oIiIpK2Euam9pbigiIik7cmV0dXJuIEV9Y2xhc3MgRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9ITE7dGhpcy5sb2FkZWROYW1lPWkubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWkuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWkuY3NzRm9udEluZm87dGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0hIShpLmZsYWdzJnFpKTtpZighYSYmIWkuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnNwbGl0KCItIiwxKVswXSxpPVZpKCk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiKyIpKWlmKGlbZV0pe2E9ITA7YnJlYWt9fXRoaXMuaXNTZXJpZkZvbnQ9YTt0aGlzLmlzU3ltYm9saWNGb250PSEhKGkuZmxhZ3MmT2kpO3RoaXMuaXNNb25vc3BhY2U9ISEoaS5mbGFncyZLaSk7bGV0e3R5cGU6cixzdWJ0eXBlOnN9PWk7dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5zeXN0ZW1Gb250SW5mbz1pLnN5c3RlbUZvbnRJbmZvO2NvbnN0IG49ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFuO3RoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPW5bMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiO2lmKHRoaXMuc3lzdGVtRm9udEluZm8/Lmd1ZXNzRmFsbGJhY2spe3RoaXMuc3lzdGVtRm9udEluZm8uZ3Vlc3NGYWxsYmFjaz0hMTt0aGlzLnN5c3RlbUZvbnRJbmZvLmNzcys9YCwke3RoaXMuZmFsbGJhY2tOYW1lfWB9dGhpcy5kaWZmZXJlbmNlcz1pLmRpZmZlcmVuY2VzO3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMuY29tcG9zaXRlPWkuY29tcG9zaXRlO3RoaXMuY01hcD1pLmNNYXA7dGhpcy5jYXBIZWlnaHQ9aS5jYXBIZWlnaHQvUWE7dGhpcy5hc2NlbnQ9aS5hc2NlbnQvUWE7dGhpcy5kZXNjZW50PWkuZGVzY2VudC9RYTt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50O3RoaXMuZm9udE1hdHJpeD1pLmZvbnRNYXRyaXg7dGhpcy5iYm94PWkuYmJveDt0aGlzLmRlZmF1bHRFbmNvZGluZz1pLmRlZmF1bHRFbmNvZGluZzt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnRvRm9udENoYXI9W107aWYoIlR5cGUzIj09PWkudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxpLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1pLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhaS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWkudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9aS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmd2FybignRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59W3Isc109Z2V0Rm9udEZpbGVUeXBlKHQsaSk7cj09PXRoaXMudHlwZSYmcz09PXRoaXMuc3VidHlwZXx8aW5mbyhgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtyfS8ke3N9LmApO2xldCBvO3RyeXtzd2l0Y2gocil7Y2FzZSJNTVR5cGUxIjppbmZvKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBhPSJUeXBlMUMiPT09c3x8IkNJREZvbnRUeXBlMEMiPT09cz9uZXcgQ0ZGRm9udCh0LGkpOm5ldyBUeXBlMUZvbnQoZSx0LGkpO2FkanVzdFdpZHRocyhpKTtvPXRoaXMuY29udmVydChlLGEsaSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO289dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsaSk7aWYodGhpcy5pc09wZW5UeXBlKXthZGp1c3RXaWR0aHMoaSk7cj0iT3BlblR5cGUifWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGb250ICR7cn0gaXMgbm90IHN1cHBvcnRlZGApfX1jYXRjaChlKXt3YXJuKGUpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoaSk7cmV0dXJufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoaSk7dGhpcy5kYXRhPW87dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLndpZHRocz1pLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1pLmRlZmF1bHRXaWR0aDt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnNlYWNNYXA9aS5zZWFjTWFwfWdldCByZW5kZXJlcigpe3JldHVybiBzaGFkb3codGhpcywicmVuZGVyZXIiLEZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsVGkpKX1leHBvcnREYXRhKGU9ITEpe2NvbnN0IHQ9ZT9bLi4uRWEsLi4udWFdOkVhLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYSxyO2ZvcihhIG9mIHQpe3I9dGhpc1thXTt2b2lkIDAhPT1yJiYoaVthXT1yKX1yZXR1cm4gaX1mYWxsYmFja1RvU3lzdGVtRm9udChlKXt0aGlzLm1pc3NpbmdGaWxlPSEwO2NvbnN0e25hbWU6dCx0eXBlOml9PXRoaXM7bGV0IGE9bm9ybWFsaXplRm9udE5hbWUodCk7Y29uc3Qgcj1qaSgpLHM9WmkoKSxuPSEhclthXSxvPSEoIXNbYV18fCFyW3NbYV1dKTthPXJbYV18fHNbYV18fGE7Y29uc3QgZz1pYSgpW2FdO2lmKGcpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWcuYXNjZW50L1FhKTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PWcuZGVzY2VudC9RYSk7aXNOYU4odGhpcy5jYXBIZWlnaHQpJiYodGhpcy5jYXBIZWlnaHQ9Zy5jYXBIZWlnaHQvUWEpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KGEpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KGEpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCBjPS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghbnx8YykmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigobnx8bykmJiJDSURGb250VHlwZTIiPT09aSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgaT1lLmNpZFRvR2lkTWFwLGE9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLHppKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSwkaSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxBYSgpKTtpZihpKXtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07dm9pZCAwIT09aVt0XSYmKGFbK2VdPWlbdF0pfWkubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IHI9YVtlXTt2b2lkIDA9PT1pW3JdJiYoYVsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXthWytlXT10fSkpO3RoaXMudG9Gb250Q2hhcj1hO3RoaXMudG9Vbmljb2RlPW5ldyBUb1VuaWNvZGVNYXAoYSl9ZWxzZSBpZigvU3ltYm9sL2kudGVzdChhKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKHdpLHhpKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoYmksTWkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKG4pe2NvbnN0IGU9YnVpbGRUb0ZvbnRDaGFyKHRoaXMuZGVmYXVsdEVuY29kaW5nLHhpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1pfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2VbK3RdPWl9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPXhpKCksaT1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCgodCxhKT0+e2lmKCF0aGlzLmNvbXBvc2l0ZSl7Y29uc3QgaT1nZXRVbmljb2RlRm9yR2x5cGgodGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sZSk7LTEhPT1pJiYoYT1pKX1pWyt0XT1hfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGksemkoKSk7dGhpcy50b0ZvbnRDaGFyPWl9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9YS5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGkpe2NvbnN0IGE9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7aVsiT1MvMiJdPW51bGw7aS5jbWFwPW51bGw7aS5oZWFkPW51bGw7aS5oaGVhPW51bGw7aS5obXR4PW51bGw7aS5tYXhwPW51bGw7aS5uYW1lPW51bGw7aS5wb3N0PW51bGw7Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTthLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGlbdC50YWddPXQpKX1yZXR1cm4gaX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGk9ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLHM9ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAoYSk7Y29uc3Qgbj1lLmdldEJ5dGVzKHIpO2UucG9zPXM7aWYoImhlYWQiPT09dCl7bls4XT1uWzldPW5bMTBdPW5bMTFdPTA7blsxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTppLGxlbmd0aDpyLG9mZnNldDphLGRhdGE6bn19ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsaSxhLHIscyl7Y29uc3Qgbj17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGk+ZS5sZW5ndGh8fGktdDw9MTIpcmV0dXJuIG47Y29uc3Qgbz1lLnN1YmFycmF5KHQsaSksZz1zaWduZWRJbnQxNihvWzJdLG9bM10pLGM9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxDPXNpZ25lZEludDE2KG9bNl0sb1s3XSksaD1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGc+Qyl7d3JpdGVTaWduZWRJbnQxNihvLDIsQyk7d3JpdGVTaWduZWRJbnQxNihvLDYsZyl9aWYoYz5oKXt3cml0ZVNpZ25lZEludDE2KG8sNCxoKTt3cml0ZVNpZ25lZEludDE2KG8sOCxjKX1jb25zdCBsPXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYobDwwKXtpZihsPC0xKXJldHVybiBuO2Euc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59bGV0IFEsRT0xMCx1PTA7Zm9yKFE9MDtRPGw7USsrKXt1PShvW0VdPDw4fG9bRSsxXSkrMTtFKz0yfWNvbnN0IGQ9RSxmPW9bRV08PDh8b1tFKzFdO24uc2l6ZU9mSW5zdHJ1Y3Rpb25zPWY7RSs9MitmO2NvbnN0IHA9RTtsZXQgbT0wO2ZvcihRPTA7UTx1O1ErKyl7Y29uc3QgZT1vW0UrK107MTkyJmUmJihvW0UtMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBpPTI7NCZlP2k9MTozMiZlJiYoaT0wKTtjb25zdCBhPXQraTttKz1hO2lmKDgmZSl7Y29uc3QgZT1vW0UrK107MD09PWUmJihvW0UtMV1ePTgpO1ErPWU7bSs9ZSphfX1pZigwPT09bSlyZXR1cm4gbjtsZXQgeT1FK207aWYoeT5vLmxlbmd0aClyZXR1cm4gbjtpZighcyYmZj4wKXthLnNldChvLnN1YmFycmF5KDAsZCkscik7YS5zZXQoWzAsMF0scitkKTthLnNldChvLnN1YmFycmF5KHAseSkscitkKzIpO3ktPWY7by5sZW5ndGgteT4zJiYoeT15KzMmLTQpO24ubGVuZ3RoPXk7cmV0dXJuIG59aWYoby5sZW5ndGgteT4zKXt5PXkrMyYtNDthLnNldChvLnN1YmFycmF5KDAseSkscik7bi5sZW5ndGg9eTtyZXR1cm4gbn1hLnNldChvLHIpO24ubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBufWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgaT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9aTtjb25zdCBhPVtbXSxbXV0scj1bXSxzPWUubGVuZ3RoLG49aStzO2lmKDAhPT10LmdldFVpbnQxNigpfHxzPDYpcmV0dXJuW2Escl07Y29uc3Qgbz10LmdldFVpbnQxNigpLGc9dC5nZXRVaW50MTYoKTtsZXQgYyxDO2ZvcihjPTA7YzxvJiZ0LnBvcysxMjw9bjtjKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmci5wdXNoKGUpfWZvcihjPTAsQz1yLmxlbmd0aDtjPEM7YysrKXtjb25zdCBlPXJbY107aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgcz1pK2crZS5vZmZzZXQ7aWYocytlLmxlbmd0aD5uKWNvbnRpbnVlO3QucG9zPXM7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGk9IiI7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO2FbMV1bb109aX1lbHNlIGFbMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVyblthLHJdfWNvbnN0IHI9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBpLGEscyxuLG8sZz1lLmRhdGEsYz0wLEM9MCxoPTA7Y29uc3QgbD1bXSxRPVtdLEU9W107bGV0IHU9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsZD0hMSxmPTAscD0wO2ZvcihsZXQgZT1nLmxlbmd0aDtjPGU7KXtjb25zdCBlPWdbYysrXTtpZig2ND09PWUpe2E9Z1tjKytdO2lmKGR8fHApYys9YTtlbHNlIGZvcihpPTA7aTxhO2krKylsLnB1c2goZ1tjKytdKX1lbHNlIGlmKDY1PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO2wucHVzaChzPDw4fGdbYysrXSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXthPWUtMTc2KzE7aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKWwucHVzaChnW2MrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXthPWUtMTg0KzE7aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO2wucHVzaChzPDw4fGdbYysrXSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7Qz1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPWwubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9bC5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9YztuPWwucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1sLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPWwubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWwubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpsLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1sLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmbC5sZW5ndGg+MDspe2wucG9wKCk7dCsrfWZvcig7dD4wOyl7bC5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGg+Qyl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgQz10LmdldEludDMyKCk7Y29uc3QgaD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09QyYmMjA0ODAhPT1DKXtpZig2PT09bi5tYXhwLmxlbmd0aClDPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtDPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLEMpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpofSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgbD1oKzEsUT0hMDtpZihsPjY1NTM1KXtRPSExO2w9aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihDPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1sPj44O24ubWF4cC5kYXRhWzVdPTI1NSZsO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLGwsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsaCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBDPXM/aSsxOmksaD1vKigxK0MpLGw9bmV3IFVpbnQ4QXJyYXkoaCk7bC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsaCkpO2UuZGF0YT1sO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcobCxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhsLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MobCxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8QztkKyssZis9byljKGwsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcobCxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLGwubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsaCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihDPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz1XaTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgQz1bXSxoPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7aC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpaFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtDLnB1c2goaC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2goV2lbZV0pOm8ucHVzaChDW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksaCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxoJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgQz0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cylDPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtDPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtDPSEwO2l8fChnPSEwKX1lbHNlIEM9ITA7QyYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IEM9ITE7Y29uc3QgaD1bXTtsZXQgbCxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKGw9MDtsPDI1NjtsKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpsLGdseXBoSWQ6ZX0pfUM9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKGw9MDtsPHIuZW50cnlDb3VudDtsKyspe2NvbnN0IGU9KGk8PDgpK2wrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqbDtRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKGw9MDtsPG87bCsrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihsPXM7bDw9ZTtsKyspaWYoNjU1MzUhPT1sKXtRPW48MD9sOmdbbitsLXNdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6bCxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihsPTA7bDxpO2wrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStsO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihsPTA7bDxlO2wrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOkN9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT14aSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOm1pW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1waS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PWwtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLGwpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksVGkpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT15aSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPXlpLHI9W10scz14aSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT14aSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKGE9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBDPXQuc2VhY3M7aWYobiYmQz8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8cixhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gQyl7dHw9MDtjb25zdCBpPUNbdF0scj1taVtpWzJdXSxnPW1pW2lbM11dLGM9YS5pbmRleE9mKHIpLGg9YS5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IGw9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpsfX19aS5zZWFjTWFwPW99Y29uc3QgaD1pLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5pLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsbD1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO2wuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7bC5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoaSxvKSk7bC5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sZyxjKSk7bC5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNihoKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihpLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc3RyaW5nMTYoaS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtsLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGkuYXNjZW50KStzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihpLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGkuaXRhbGljQW5nbGUpKmkueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoYykpO2wuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGk9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IGE9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxyPWM7dDxyO3QrKyl7bGV0IHI9MDtpZihlKXtjb25zdCBpPWVbdC0xXTtyPSJ3aWR0aCJpbiBpP2kud2lkdGg6MH1lbHNlIGkmJihyPU1hdGguY2VpbChpW3RdfHwwKSk7YSs9c3RyaW5nMTYocikrc3RyaW5nMTYoMCl9cmV0dXJuIGF9KCkpO2wuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihjKSk7bC5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtsLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoaSkpO3JldHVybiBsLnRvQXJyYXkoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgaSxhLHIscz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBuPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7bj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49Y29udmVydENpZFN0cmluZyhlLG4pKX1hPXRoaXMud2lkdGhzW25dOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW25dO2xldCBnPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGcmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUoZykpO2xldCBjPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdOyIubm90ZGVmIiE9PXQmJiIiIT09dHx8IlR5cGUxIiE9PXRoaXMudHlwZXx8KGk9MzIpO2k9ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9IaSgpW2VdfHxlOjE3Mz09PWU/NDU6ZX0oaSl9dGhpcy5pc1R5cGUzRm9udCYmKHI9aSk7bGV0IEM9bnVsbDtpZih0aGlzLnNlYWNNYXA/LltlXSl7Yz0hMDtjb25zdCB0PXRoaXMuc2VhY01hcFtlXTtpPXQuYmFzZUZvbnRDaGFyQ29kZTtDPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludCh0LmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OnQuYWNjZW50T2Zmc2V0fX1sZXQgaD0iIjsibnVtYmVyIj09dHlwZW9mIGkmJihpPD0xMTE0MTExP2g9U3RyaW5nLmZyb21Db2RlUG9pbnQoaSk6d2FybihgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHtpfWApKTtzPW5ldyBmb250c19HbHlwaChlLGgsZyxDLGEsbyxyLHQsYyk7cmV0dXJuIHRoaXMuX2dseXBoQ2FjaGVbZV09c31jaGFyc1RvR2x5cGhzKGUpe2xldCB0PXRoaXMuX2NoYXJzQ2FjaGVbZV07aWYodClyZXR1cm4gdDt0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8YTspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxyLGkpO2NvbnN0e2NoYXJjb2RlOmEsbGVuZ3RoOnN9PWk7cis9cztjb25zdCBuPXRoaXMuX2NoYXJUb0dseXBoKGEsMT09PXMmJjMyPT09ZS5jaGFyQ29kZUF0KHItMSkpO3QucHVzaChuKX19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KGkpLHI9dGhpcy5fY2hhclRvR2x5cGgoYSwzMj09PWEpO3QucHVzaChyKX1yZXR1cm4gdGhpcy5fY2hhcnNDYWNoZVtlXT10fWdldENoYXJQb3NpdGlvbnMoZSl7Y29uc3QgdD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0wO2Zvcig7YTxlLmxlbmd0aDspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxhLGkpO2NvbnN0IHI9aS5sZW5ndGg7dC5wdXNoKFthLGErcl0pO2ErPXJ9fWVsc2UgZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXQucHVzaChbaSxpKzFdKTtyZXR1cm4gdH1nZXQgZ2x5cGhDYWNoZVZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2dseXBoQ2FjaGUpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLGk9W10saGFzQ3VycmVudEJ1ZkVycm9ycz0oKT0+dC5sZW5ndGglMj09MSxhPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9ZS5jb2RlUG9pbnRBdChyKTtzPjU1Mjk1JiYoczw1NzM0NHx8cz42NTUzMykmJnIrKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1hKHMpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goaS5qb2luKCIiKSk7aS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWkucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChzKSl9dC5wdXNoKGkuam9pbigiIikpO3JldHVybiB0fX1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoZT0hMSl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1jb25zdCBkYT0yLGZhPTMscGE9NCxtYT01LHlhPTYsd2E9NztjbGFzcyBQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsaSxhLHIpe2NvbnN0IHM9ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZS5kaWN0OmUsbj1zLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG4pe2Nhc2UgZGE6Y2FzZSBmYTpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhzLHQsaSxhLHIpO2Nhc2UgcGE6Y2FzZSBtYTpjYXNlIHlhOmNhc2Ugd2E6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsaSxhLHIpO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBTaGFkaW5nVHlwZTogIituKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fWNsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBTTUFMTF9OVU1CRVI9MWUtNjtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU2hhZGluZyYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nLiIpfWdldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09ZGE/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1mYSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBvPTAsZz0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW28sZ109Yyk7bGV0IEM9ITEsaD0hMTtjb25zdCBsPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKGwsMikmJihbQyxoXT1sKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1mYXx8QyYmaCkpe2NvbnN0W2UsdCxpLGEscixzXT10aGlzLmNvb3Jkc0FycixuPU1hdGguaHlwb3QoZS1hLHQtcik7aTw9cytuJiZzPD1pK24mJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PUM7dGhpcy5leHRlbmRFbmQ9aDtjb25zdCBRPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLEU9YS5jcmVhdGVGcm9tQXJyYXkoUSksdT0oZy1vKS84NDAsZD10aGlzLmNvbG9yU3RvcHM9W107aWYobz49Z3x8dTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCBmPW5ldyBGbG9hdDMyQXJyYXkobi5udW1Db21wcykscD1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCBtLHk9MDtwWzBdPW87RShwLDAsZiwwKTtsZXQgdz1uLmdldFJnYihmLDApO2NvbnN0IGI9VXRpbC5tYWtlSGV4Q29sb3Iod1swXSx3WzFdLHdbMl0pO2QucHVzaChbMCxiXSk7bGV0IEQ9MTtwWzBdPW8rdTtFKHAsMCxmLDApO2xldCBTPW4uZ2V0UmdiKGYsMCksaz1TWzBdLXdbMF0rMSxSPVNbMV0td1sxXSsxLE49U1syXS13WzJdKzEsRz1TWzBdLXdbMF0tMSx4PVNbMV0td1sxXS0xLFU9U1syXS13WzJdLTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXtwWzBdPW8rZSp1O0UocCwwLGYsMCk7bT1uLmdldFJnYihmLDApO2NvbnN0IHQ9ZS15O2s9TWF0aC5taW4oaywobVswXS13WzBdKzEpL3QpO1I9TWF0aC5taW4oUiwobVsxXS13WzFdKzEpL3QpO049TWF0aC5taW4oTiwobVsyXS13WzJdKzEpL3QpO0c9TWF0aC5tYXgoRywobVswXS13WzBdLTEpL3QpO3g9TWF0aC5tYXgoeCwobVsxXS13WzFdLTEpL3QpO1U9TWF0aC5tYXgoVSwobVsyXS13WzJdLTEpL3QpO2lmKCEoRzw9ayYmeDw9UiYmVTw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoU1swXSxTWzFdLFNbMl0pO2QucHVzaChbRC84NDAsZV0pO2s9bVswXS1TWzBdKzE7Uj1tWzFdLVNbMV0rMTtOPW1bMl0tU1syXSsxO0c9bVswXS1TWzBdLTE7eD1tWzFdLVNbMV0tMTtVPW1bMl0tU1syXS0xO3k9RDt3PVN9RD1lO1M9bX1jb25zdCBNPVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goWzEsTV0pO2xldCBMPSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7bT1uLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO0w9VXRpbC5tYWtlSGV4Q29sb3IobVswXSxtWzFdLG1bMl0pfWlmKCFDKXtkLnVuc2hpZnQoWzAsTF0pO2RbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighaCl7ZC5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtkLnB1c2goWzEsTF0pfXRoaXMuY29sb3JTdG9wcz1kfWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgaSxhLHIscyxuO2lmKHQ9PT1kYSl7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PWZhKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnIqKGFbMV0tYVswXSkrYVswXSxpKnIqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcz0wLG49NDtzPGU7cysrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtyW3NdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcz10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHIsMCxzLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IocywwKX19bGV0IGJhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4gYmFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscj0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3IqKjMsMyphKnIqKjIsMyphKioyKnIsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG49Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cy5nZXRSYXcoIkNTIil8fHMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczppLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJhY2tncm91bmQ9cy5oYXMoIkJhY2tncm91bmQiKT9uLmdldFJnYihzLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3Qgbz1zLmdldFJhdygiRnVuY3Rpb24iKSxnPW8/YS5jcmVhdGVGcm9tQXJyYXkobyk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYz17Yml0c1BlckNvb3JkaW5hdGU6cy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpzLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOnMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpzLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOmcsY29sb3JTcGFjZTpuLG51bUNvbXBzOmc/MTpuLm51bUNvbXBzfSxDPW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYyk7bGV0IGg9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgcGE6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKEMpO2JyZWFrO2Nhc2UgbWE6Y29uc3QgZT0wfHMuZ2V0KCJWZXJ0aWNlc1BlclJvdyIpO2lmKGU8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcoQyxlKTticmVhaztjYXNlIHlhOnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhDKTtoPSEwO2JyZWFrO2Nhc2Ugd2E6dGhpcy5fZGVjb2RlVHlwZTdTaGFkaW5nKEMpO2g9ITA7YnJlYWs7ZGVmYXVsdDp1bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgbWVzaCB0eXBlLiIpfWlmKGgpe3RoaXMuX3VwZGF0ZUJvdW5kcygpO2ZvcihsZXQgZT0wLHQ9dGhpcy5maWd1cmVzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuX2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpfXRoaXMuX3VwZGF0ZUJvdW5kcygpO3RoaXMuX3BhY2tEYXRhKCl9X2RlY29kZVR5cGU0U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1bXSxyPVtdO2xldCBzPTA7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBuPWUucmVhZEZsYWcoKSxvPWUucmVhZENvb3JkaW5hdGUoKSxnPWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09cyl7aWYoISgwPD1uJiZuPD0yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChuKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTpyLnB1c2goci5hdCgtMiksci5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6ci5wdXNoKHIuYXQoLTMpLHIuYXQoLTEpKTtzPTF9YS5wdXNoKG4pfXIucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKG8pO2kucHVzaChnKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2goaS5sZW5ndGgpO2kucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkociksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzg6MTI7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxDLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVsxMV09bis3O2FbNF09bisxO2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO0M9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09QzthWzExXT1uKzM7YVs0XT1jO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzExXT1uKzM7YVs0XT1hWzJdO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX1hWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSk7YVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pO2FbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pO2FbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU3IGZsYWciKTtjb25zdCBuPXQubGVuZ3RoO2ZvcihsZXQgaT0wLGE9MCE9PXM/MTI6MTY7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxDLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVs5XT1uKzEzO2FbMTBdPW4rMTQ7YVsxMV09bis3O2FbNF09bisxO2FbNV09bisxMjthWzZdPW4rMTU7YVs3XT1uKzg7YVswXT1uO2FbMV09bisxMTthWzJdPW4rMTA7YVszXT1uKzk7clsyXT1vKzE7clszXT1vKzI7clswXT1vO3JbMV09byszO2JyZWFrO2Nhc2UgMTpnPWFbMTJdO2M9YVsxM107Qz1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1DO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YzthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clsyXTtjPXJbM107clsyXT1jO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAyOmc9YVsxNV07Yz1hWzExXTthWzEyXT1hWzNdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVs3XTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbM107clsyXT1yWzFdO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzFdO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YVsyXTthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1hWzNdO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O3JbMl09clswXTtyWzNdPW87clswXT1yWzFdO3JbMV09bysxfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShyKX0pfX1fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl7Y29uc3QgdD10aGlzLmZpZ3VyZXNbZV07YXNzZXJ0KCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTtjb25zdCBpPXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj10LmNvb3JkcyxzPXQuY29sb3JzLG49TWF0aC5taW4oaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxvPU1hdGgubWluKGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSksZz1NYXRoLm1heChpW3JbMF1dWzBdLGlbclszXV1bMF0saVtyWzEyXV1bMF0saVtyWzE1XV1bMF0pLGM9TWF0aC5tYXgoaVtyWzBdXVsxXSxpW3JbM11dWzFdLGlbclsxMl1dWzFdLGlbclsxNV1dWzFdKTtsZXQgQz1NYXRoLmNlaWwoKGctbikqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbMl0tdGhpcy5ib3VuZHNbMF0pKTtDPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULEMpKTtsZXQgaD1NYXRoLmNlaWwoKGMtbykqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0pKTtoPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTtjb25zdCBsPUMrMSxRPW5ldyBJbnQzMkFycmF5KChoKzEpKmwpLEU9bmV3IEludDMyQXJyYXkoKGgrMSkqbCk7bGV0IHU9MDtjb25zdCBkPW5ldyBVaW50OEFycmF5KDMpLGY9bmV3IFVpbnQ4QXJyYXkoMykscD1hW3NbMF1dLG09YVtzWzFdXSx5PWFbc1syXV0sdz1hW3NbM11dLGI9Z2V0QihoKSxEPWdldEIoQyk7Zm9yKGxldCBlPTA7ZTw9aDtlKyspe2RbMF09KHBbMF0qKGgtZSkreVswXSplKS9ofDA7ZFsxXT0ocFsxXSooaC1lKSt5WzFdKmUpL2h8MDtkWzJdPShwWzJdKihoLWUpK3lbMl0qZSkvaHwwO2ZbMF09KG1bMF0qKGgtZSkrd1swXSplKS9ofDA7ZlsxXT0obVsxXSooaC1lKSt3WzFdKmUpL2h8MDtmWzJdPShtWzJdKihoLWUpK3dbMl0qZSkvaHwwO2ZvcihsZXQgdD0wO3Q8PUM7dCsrLHUrKyl7aWYoISgwIT09ZSYmZSE9PWh8fDAhPT10JiZ0IT09QykpY29udGludWU7bGV0IHM9MCxuPTAsbz0wO2ZvcihsZXQgYT0wO2E8PTM7YSsrKWZvcihsZXQgZz0wO2c8PTM7ZysrLG8rKyl7Y29uc3QgYz1iW2VdW2FdKkRbdF1bZ107cys9aVtyW29dXVswXSpjO24rPWlbcltvXV1bMV0qY31RW3VdPWkubGVuZ3RoO2kucHVzaChbcyxuXSk7RVt1XT1hLmxlbmd0aDtjb25zdCBnPW5ldyBVaW50OEFycmF5KDMpO2dbMF09KGRbMF0qKEMtdCkrZlswXSp0KS9DfDA7Z1sxXT0oZFsxXSooQy10KStmWzFdKnQpL0N8MDtnWzJdPShkWzJdKihDLXQpK2ZbMl0qdCkvQ3wwO2EucHVzaChnKX19UVswXT1yWzBdO0VbMF09c1swXTtRW0NdPXJbM107RVtDXT1zWzFdO1FbbCpoXT1yWzEyXTtFW2wqaF09c1syXTtRW2wqaCtDXT1yWzE1XTtFW2wqaCtDXT1zWzNdO3RoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOlEsY29sb3JzOkUsdmVydGljZXNQZXJSb3c6bH19X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0saT1lLGE9dDtmb3IobGV0IHI9MSxzPXRoaXMuY29vcmRzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPXRoaXMuY29vcmRzW3JdWzBdLG49dGhpcy5jb29yZHNbcl1bMV07ZT1lPnM/czplO3Q9dD5uP246dDtpPWk8cz9zOmk7YT1hPG4/bjphfXRoaXMuYm91bmRzPVtlLHQsaSxhXX1fcGFja0RhdGEoKXtsZXQgZSx0LGksYTtjb25zdCByPXRoaXMuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXTtzW2krK109dFswXTtzW2krK109dFsxXX10aGlzLmNvb3Jkcz1zO2NvbnN0IG49dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKm4ubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtvW2krK109dFswXTtvW2krK109dFsxXTtvW2krK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGc9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV0scj10LmNvb3JkcyxzPXQuY29sb3JzO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtyW2ldKj0yO3NbaV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09MHx8ZVszXS1lWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBNZXNoU2hhZGluZyBib3VuZHM6IFske2V9XS5gKTtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLGUsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIER1bW15U2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2dldElSKCl7cmV0dXJuWyJEdW1teSJdfX1mdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIoZSx0LGkpe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHM9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIXN8fHNbMl0tc1swXT09MHx8c1szXS1zWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgZz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsaSxlLHIscyxuLG8sZyxjXX1jb25zdCBEYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxGYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sU2E9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sa2E9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LFJhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxOYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sR2E9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHhhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxVYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLE1hPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxMYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEhhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sSmE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sWWE9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSx2YT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxUYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sS2E9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10scWE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLE9hPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxQYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sV2E9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLGphPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxYYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFphPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxWYT1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sX2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHphPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sJGE9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LEFyPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxlcj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sdHI9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGlyPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxhcj1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxycj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sc3I9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLG5yPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxvcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGdyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxJcj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sY3I9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LENyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6dHIsYmFzZVdpZHRoczpYYSxiYXNlTWFwcGluZzpaYSxtZXRyaWNzOmlyfTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpWYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOnFhLG1ldHJpY3M6X2F9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOkFyLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczplcn07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnphLGJhc2VXaWR0aHM6T2EsYmFzZU1hcHBpbmc6UGEsbWV0cmljczokYX07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOlhhLGJhc2VNYXBwaW5nOlphfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6cWF9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpHYSxiYXNlV2lkdGhzOlhhLGJhc2VNYXBwaW5nOlphLG1ldHJpY3M6eGF9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOkRhLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6cWEsbWV0cmljczpGYX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOlJhLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczpOYX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6U2EsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOmthfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpJcixiYXNlV2lkdGhzOlhhLGJhc2VNYXBwaW5nOlphLG1ldHJpY3M6Y3J9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmFyLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6cWEsbWV0cmljczpycn07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm9yLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczpncn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6c3IsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOm5yfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnZhLGJhc2VXaWR0aHM6WGEsYmFzZU1hcHBpbmc6WmEsbWV0cmljczpUYX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpVYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOnFhLG1ldHJpY3M6TWF9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOkphLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczpZYX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpMYSxiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhLG1ldHJpY3M6SGF9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIENyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczppLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9pLm1hcCgoKGUsdCk9PmUqclt0XSkpOmk7bGV0IG4sbz0tMjtjb25zdCBnPVtdO2Zvcihjb25zdFtlLHRdb2YgYS5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe24ucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO249W3NbdF1dO2cucHVzaChlLG4pfXJldHVybiBnfShlKSxpPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2kuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtpLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtpLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2kuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2kuc2V0KCJXIix0KTtpLnNldCgiRmlyc3RDaGFyIix0WzBdKTtpLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2kuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gaX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChoci5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KGhyLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoaHIuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChoci5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KGhyLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3QoaHIuUkJSQUNFKTtpZih0aGlzLmFjY2VwdChoci5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoaHIuTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgaT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3QoaHIuUkJSQUNFKTt0aGlzLmV4cGVjdChoci5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1pO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBocj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihoci5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKGhyLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKGhyLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihoci5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihoci5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiB5dDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihoci5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7aVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCBhPWkuam9pbigiIik7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKGEpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBpPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHtpfWApO3JldHVybiBpfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUxvY2FsQ2FjaGUmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlTG9jYWxDYWNoZS4iKTt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNiPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I0QoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjRigpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jRDxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGk9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFpKXtpPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsaSl9aS5hZGQodCk7cmV0dXJuIShpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI0YpfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNiLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI2IuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNGP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI2IuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1nZXRDYWNoZWQoZSl7bGV0IHQ7ZSBpbnN0YW5jZW9mIFJlZj90PWU6ZSBpbnN0YW5jZW9mIERpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodD1lLmRpY3Q/Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGk7ZSBpbnN0YW5jZW9mIFJlZj9pPWU6ZSBpbnN0YW5jZW9mIERpY3Q/aT1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaT1lLmRpY3Q/Lm9iaklkKTtpJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsaSx0KX1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGksYSl7bGV0IHIscyxuPTE7Zm9yKHI9MCxzPWUubGVuZ3RoO3I8cztyKyspbio9ZVtyXTtuKj10O2NvbnN0IG89bmV3IEFycmF5KG4pO2xldCBnPTAsYz0wO2NvbnN0IEM9MS8oMioqaS0xKSxoPWEuZ2V0Qnl0ZXMoKG4qaSs3KS84KTtsZXQgbD0wO2ZvcihyPTA7cjxuO3IrKyl7Zm9yKDtnPGk7KXtjPDw9ODtjfD1oW2wrK107Zys9OH1nLT1pO29bcl09KGM+PmcpKkM7YyY9KDE8PGcpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pe2NvbnN0IGE9aS5kaWN0fHxpO3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbk9iajppfSl7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBpKWEucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsaSxyKXtmb3IobGV0IHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspYVtzXShlLHQsaSxyK3MpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7ZnVuY3Rpb24gdG9NdWx0aUFycmF5KGUpe2NvbnN0IHQ9ZS5sZW5ndGgsaT1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKz0yKWlbYSsrXT1bZVtyXSxlW3IrMV1dO3JldHVybiBpfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxpLGEscil7cmV0dXJuIGErKHItYSkvKGktdCkqKGUtdCl9bGV0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG49ci5sZW5ndGgvMixvPXMubGVuZ3RoLzI7cj10b011bHRpQXJyYXkocik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgZz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlNpemUiKSksYz1hLmdldCgiQml0c1BlclNhbXBsZSIpLEM9YS5nZXQoIk9yZGVyIil8fDE7MSE9PUMmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK0MpO2xldCBoPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGgpaD10b011bHRpQXJyYXkoaCk7ZWxzZXtoPVtdO2ZvcihsZXQgZT0wO2U8bjsrK2UpaC5wdXNoKFswLGdbZV0tMV0pfWxldCBsPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRGVjb2RlIikpO2w9bD90b011bHRpQXJyYXkobCk6cztjb25zdCBRPXRoaXMuZ2V0U2FtcGxlQXJyYXkoZyxvLGMsaSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsaSxhKXtjb25zdCBjPTE8PG4sQz1uZXcgRmxvYXQ2NEFycmF5KGMpLEU9bmV3IFVpbnQzMkFycmF5KGMpO2xldCB1LGQ7Zm9yKGQ9MDtkPGM7ZCsrKUNbZF09MTtsZXQgZj1vLHA9MTtmb3IodT0wO3U8bjsrK3Upe2NvbnN0IGk9clt1XVswXSxhPXJbdV1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3VdLGkpLGEpLGksYSxoW3VdWzBdLGhbdV1bMV0pO2NvbnN0IG49Z1t1XTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksbi0xKTtjb25zdCBvPXM8bi0xP01hdGguZmxvb3Iocyk6cy0xLGw9bysxLXMsUT1zLW8sbT1vKmYseT1tK2Y7Zm9yKGQ9MDtkPGM7ZCsrKWlmKGQmcCl7Q1tkXSo9UTtFW2RdKz15fWVsc2V7Q1tkXSo9bDtFW2RdKz1tfWYqPW47cDw8PTF9Zm9yKGQ9MDtkPG87KytkKXtsZXQgZT0wO2Zvcih1PTA7dTxjO3UrKyllKz1RW0VbdV0rZF0qQ1t1XTtlPWludGVycG9sYXRlKGUsMCwxLGxbZF1bMF0sbFtkXVsxXSk7aVthK2RdPU1hdGgubWluKE1hdGgubWF4KGUsc1tkXVswXSksc1tkXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMxIikpfHxbMV0scz1pLmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IG89bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxpLHIpe2NvbnN0IGc9MT09PXM/ZVt0XTplW3RdKipzO2ZvcihsZXQgZT0wO2U8bzsrK2UpaVtyK2VdPWFbZV0rZypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCByPVtdO2Zvcihjb25zdCBhIG9mIGkuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihhKX0pKTtjb25zdCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQm91bmRzIikpLG49dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGksZyl7Y29uc3QgYz1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsaSl7ZT5pP2U9aTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGFbMF0sYVsxXSksQz1zLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8QyYmIShjPHNbaF0pOysraCk7bGV0IGw9YVswXTtoPjAmJihsPXNbaC0xXSk7bGV0IFE9YVsxXTtoPHMubGVuZ3RoJiYoUT1zW2hdKTtjb25zdCBFPW5bMipoXSx1PW5bMipoKzFdO29bMF09bD09PVE/RTpFKyhjLWwpKih1LUUpLyhRLWwpO3JbaF0obywwLGksZyl9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtjb25zdCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IG49bmV3IFBvc3RTY3JpcHRMZXhlcihpKSxvPW5ldyBQb3N0U2NyaXB0UGFyc2VyKG4pLnBhcnNlKCk7aWYodCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKG8scixzKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IGc9cy5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxDPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKG8pLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbD04MTkyO2NvbnN0IFE9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxpLGEpe2xldCByLG4sbz0iIjtjb25zdCBFPVE7Zm9yKHI9MDtyPGM7cisrKXtuPWVbdCtyXTtFW3JdPW47bys9bisiXyJ9Y29uc3QgdT1oW29dO2lmKHZvaWQgMCE9PXUpe2kuc2V0KHUsYSk7cmV0dXJufWNvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShnKSxmPUMuZXhlY3V0ZShFKSxwPWYubGVuZ3RoLWc7Zm9yKHI9MDtyPGc7cisrKXtuPWZbcCtyXTtsZXQgZT1zWzIqcl07aWYobjxlKW49ZTtlbHNle2U9c1syKnIrMV07bj5lJiYobj1lKX1kW3JdPW59aWYobD4wKXtsLS07aFtvXT1kfWkuc2V0KGQsYSl9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgaT10Lmxlbmd0aC1lLGE9ZS0xO2E+PTA7YS0tLGkrKyl0LnB1c2godFtpXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGk9dGhpcy5zdGFjayxhPWkubGVuZ3RoLWUscj1pLmxlbmd0aC0xLHM9YSsodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPWEsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9YSx0PXMtMTtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPXMsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgaT0wO2NvbnN0IGE9dGhpcy5vcGVyYXRvcnMscj1hLmxlbmd0aDtsZXQgcyxuLG87Zm9yKDtpPHI7KXtzPWFbaSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpc3dpdGNoKHMpe2Nhc2UianoiOm89dC5wb3AoKTtuPXQucG9wKCk7bnx8KGk9byk7YnJlYWs7Y2FzZSJqIjpuPXQucG9wKCk7aT1uO2JyZWFrO2Nhc2UiYWJzIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKG4pKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobitvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuJiZvKTp0LnB1c2gobiZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtuPXQucG9wKCk7bj1NYXRoLmF0YW4yKG4sbykvTWF0aC5QSSoxODA7bjwwJiYobis9MzYwKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO249dC5wb3AoKTtuPjA/dC5wdXNoKG48PG8pOnQucHVzaChuPj5vKTticmVhaztjYXNlImNlaWxpbmciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG4pKTticmVhaztjYXNlImNvcHkiOm49dC5wb3AoKTt0LmNvcHkobik7YnJlYWs7Y2FzZSJjb3MiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6bj0wfHQucG9wKCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG49PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihuKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vb3wwKTticmVhaztjYXNlImluZGV4IjpuPXQucG9wKCk7dC5pbmRleChuKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPD1vKTticmVhaztjYXNlImxuIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG4pKTticmVhaztjYXNlImxvZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKG4pKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4hPT1vKTticmVhaztjYXNlIm5lZyI6bj10LnBvcCgpO3QucHVzaCgtbik7YnJlYWs7Y2FzZSJub3QiOm49dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuP3QucHVzaCghbik6dC5wdXNoKH5uKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG58fG8pOnQucHVzaChufG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnJvbGwobixvKTticmVhaztjYXNlInJvdW5kIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobikpO2JyZWFrO2Nhc2Uic2luIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChuKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4tbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm49dC5wb3AoKTtuPW48MD9NYXRoLmNlaWwobik6TWF0aC5mbG9vcihuKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiE9PW8pOnQucHVzaChuXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSxhLHIpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWk7dGhpcy5taW49YTt0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBpPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxhPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGksYSl9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsaSl7Y29uc3QgYT1bXSxyPVtdLHM9dC5sZW5ndGg+PjEsbj1pLmxlbmd0aD4+MTtsZXQgbyxnLGMsQyxoLGwsUSxFLHU9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKWEucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe0U9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIEUpc3dpdGNoKEUpe2Nhc2UiYWRkIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO0M9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGMsQykpO2JyZWFrO2Nhc2UiY3ZyIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO0M9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGMsQykpO2JyZWFrO2Nhc2Uic3ViIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO0M9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGMsQykpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7bD1hLnBvcCgpO2EucHVzaChoLGwpO2JyZWFrO2Nhc2UicG9wIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2EucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO289Yy5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtoPWFbYS5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLW8tMV09UTthLnB1c2goUSk7ci5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJkdXAiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7Yz1hLnBvcCgpO2EucHVzaChidWlsZE1pbk9wZXJhdGlvbihjLGVbdCsxXSkpO3QrPTY7YnJlYWt9aD1hLmF0KC0xKTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtDPWEucG9wKCk7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PUMudHlwZXx8ImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO2c9Qy5udW1iZXI7bz1jLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7Zz0oZyVvK28pJW87aWYoMD09PWcpYnJlYWs7YS5wdXNoKC4uLmEuc3BsaWNlKGEubGVuZ3RoLW8sby1nKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIGEucHVzaChuZXcgQXN0TGl0ZXJhbChFKSl9aWYoYS5sZW5ndGghPT1uKXJldHVybiBudWxsO2NvbnN0IGQ9W107Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7ZC5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWFbZV0scj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQocik7Y29uc3Qgcz1pWzIqZV0sbj1pWzIqZSsxXSxvPVtyLnRvU3RyaW5nKCldO2lmKHM+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixzLCIsICIpO28ucHVzaCgiKSIpfWlmKG48dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixuLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7ZC5wdXNoKG8uam9pbigiIikpfXJldHVybiBkLmpvaW4oIlxuIil9fWNvbnN0IGxyPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxRcj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsaSl7bGV0IGEscjtmb3IoYT10LHI9ZS5sZW5ndGg7YTxyOysrYSlpZihlW2FdIT09aSlyZXR1cm4gYTtyZXR1cm4gYX1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGksYSl7Zm9yKGxldCByPXQ7cjxpOysrcillW3JdPWF9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsaSl7Zm9yKGxldCBhPXQscj1pLTE7YTxyOysrYSwtLXIpe2NvbnN0IHQ9ZVthXTtlW2FdPWVbcl07ZVtyXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsaT0hMSl7bGV0IGE9Imx0ciI7aT9hPSJ0dGIiOnR8fChhPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOmF9fWNvbnN0IEVyPVtdLHVyPVtdO2Z1bmN0aW9uIGJpZGkoZSx0PS0xLGk9ITEpe2xldCBhPSEwO2NvbnN0IHI9ZS5sZW5ndGg7aWYoMD09PXJ8fGkpcmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUsYSxpKTtFci5sZW5ndGg9cjt1ci5sZW5ndGg9cjtsZXQgcyxuLG89MDtmb3Iocz0wO3M8cjsrK3Mpe0VyW3NdPWUuY2hhckF0KHMpO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KHMpO2xldCBpPSJMIjtpZih0PD0yNTUpaT1sclt0XTtlbHNlIGlmKDE0MjQ8PXQmJnQ8PTE1MjQpaT0iUiI7ZWxzZSBpZigxNTM2PD10JiZ0PD0xNzkxKXtpPVFyWzI1NSZ0XTtpfHx3YXJuKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UoMTc5Mjw9dCYmdDw9MjIyMHx8NjQzMzY8PXQmJnQ8PTY1MDIzfHw2NTEzNjw9dCYmdDw9NjUyNzkpJiYoaT0iQUwiKTsiUiIhPT1pJiYiQUwiIT09aSYmIkFOIiE9PWl8fG8rKzt1cltzXT1pfWlmKDA9PT1vKXthPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGEpfWlmKC0xPT09dClpZihvL3I8LjMmJnI+NCl7YT0hMDt0PTB9ZWxzZXthPSExO3Q9MX1jb25zdCBnPVtdO2ZvcihzPTA7czxyOysrcylnW3NdPXQ7Y29uc3QgYz1pc09kZCh0KT8iUiI6IkwiLEM9YyxoPUM7bGV0IGwsUT1DO2ZvcihzPTA7czxyOysrcykiTlNNIj09PXVyW3NdP3VyW3NdPVE6UT11cltzXTtRPUM7Zm9yKHM9MDtzPHI7KytzKXtsPXVyW3NdOyJFTiI9PT1sP3VyW3NdPSJBTCI9PT1RPyJBTiI6IkVOIjoiUiIhPT1sJiYiTCIhPT1sJiYiQUwiIT09bHx8KFE9bCl9Zm9yKHM9MDtzPHI7KytzKXtsPXVyW3NdOyJBTCI9PT1sJiYodXJbc109IlIiKX1mb3Iocz0xO3M8ci0xOysrcyl7IkVTIj09PXVyW3NdJiYiRU4iPT09dXJbcy0xXSYmIkVOIj09PXVyW3MrMV0mJih1cltzXT0iRU4iKTsiQ1MiIT09dXJbc118fCJFTiIhPT11cltzLTFdJiYiQU4iIT09dXJbcy0xXXx8dXJbcysxXSE9PXVyW3MtMV18fCh1cltzXT11cltzLTFdKX1mb3Iocz0wO3M8cjsrK3MpaWYoIkVOIj09PXVyW3NdKXtmb3IobGV0IGU9cy0xO2U+PTAmJiJFVCI9PT11cltlXTstLWUpdXJbZV09IkVOIjtmb3IobGV0IGU9cysxO2U8ciYmIkVUIj09PXVyW2VdOysrZSl1cltlXT0iRU4ifWZvcihzPTA7czxyOysrcyl7bD11cltzXTsiV1MiIT09bCYmIkVTIiE9PWwmJiJFVCIhPT1sJiYiQ1MiIT09bHx8KHVyW3NdPSJPTiIpfVE9Qztmb3Iocz0wO3M8cjsrK3Mpe2w9dXJbc107IkVOIj09PWw/dXJbc109IkwiPT09UT8iTCI6IkVOIjoiUiIhPT1sJiYiTCIhPT1sfHwoUT1sKX1mb3Iocz0wO3M8cjsrK3MpaWYoIk9OIj09PXVyW3NdKXtjb25zdCBlPWZpbmRVbmVxdWFsKHVyLHMrMSwiT04iKTtsZXQgdD1DO3M+MCYmKHQ9dXJbcy0xXSk7bGV0IGk9aDtlKzE8ciYmKGk9dXJbZSsxXSk7IkwiIT09dCYmKHQ9IlIiKTsiTCIhPT1pJiYoaT0iUiIpO3Q9PT1pJiZzZXRWYWx1ZXModXIscyxlLHQpO3M9ZS0xfWZvcihzPTA7czxyOysrcykiT04iPT09dXJbc10mJih1cltzXT1jKTtmb3Iocz0wO3M8cjsrK3Mpe2w9dXJbc107aXNFdmVuKGdbc10pPyJSIj09PWw/Z1tzXSs9MToiQU4iIT09bCYmIkVOIiE9PWx8fChnW3NdKz0yKToiTCIhPT1sJiYiQU4iIT09bCYmIkVOIiE9PWx8fChnW3NdKz0xKX1sZXQgRSx1PS0xLGQ9OTk7Zm9yKHM9MCxuPWcubGVuZ3RoO3M8bjsrK3Mpe0U9Z1tzXTt1PEUmJih1PUUpO2Q+RSYmaXNPZGQoRSkmJihkPUUpfWZvcihFPXU7RT49ZDstLUUpe2xldCBlPS0xO2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKWlmKGdbc108RSl7aWYoZT49MCl7cmV2ZXJzZVZhbHVlcyhFcixlLHMpO2U9LTF9fWVsc2UgZTwwJiYoZT1zKTtlPj0wJiZyZXZlcnNlVmFsdWVzKEVyLGUsZy5sZW5ndGgpfWZvcihzPTAsbj1Fci5sZW5ndGg7czxuOysrcyl7Y29uc3QgZT1FcltzXTsiPCIhPT1lJiYiPiIhPT1lfHwoRXJbc109IiIpfXJldHVybiBjcmVhdGVCaWRpVGV4dChFci5qb2luKCIiKSxhKX1jb25zdCBkcj17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwifSxmcj17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJib2xkIn0scHI9e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0sbXI9e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoiYm9sZCJ9LHlyPW5ldyBNYXAoW1siVGltZXMtUm9tYW4iLHtsb2NhbDpbIlRpbWVzIE5ldyBSb21hbiIsIlRpbWVzLVJvbWFuIiwiVGltZXMiLCJMaWJlcmF0aW9uIFNlcmlmIiwiTmltYnVzIFJvbWFuIiwiTmltYnVzIFJvbWFuIEwiLCJUaW5vcyIsIlRob3JuZGFsZSIsIlRlWCBHeXJlIFRlcm1lcyIsIkZyZWVTZXJpZiIsIkxpbnV4IExpYmVydGluZSBPIiwiTGliZXJ0aW51cyBTZXJpZiIsIkRlamFWdSBTZXJpZiIsIkJpdHN0cmVhbSBWZXJhIFNlcmlmIiwiVWJ1bnR1Il0sc3R5bGU6ZHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6ZnIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpwcix1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTptcix1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6ZHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZCIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixzdHlsZTpmcix1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1PYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsc3R5bGU6cHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6bXIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJDb3VyaWVyIix7bG9jYWw6WyJDb3VyaWVyIiwiQ291cmllciBOZXciLCJMaWJlcmF0aW9uIE1vbm8iLCJOaW1idXMgTW9ubyIsIk5pbWJ1cyBNb25vIEwiLCJDb3VzaW5lIiwiQ3VtYmVybGFuZCIsIlRlWCBHeXJlIEN1cnNvciIsIkZyZWVNb25vIiwiTGludXggTGliZXJ0aW5lIE1vbm8gTyIsIkxpYmVydGludXMgTW9ubyJdLHN0eWxlOmRyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6ZnIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpwcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTptcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOmRyLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJBcmlhbE5hcnJvdy1Cb2xkIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpmcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbE5hcnJvdy1JdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOnByLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOm1yLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJDYWxpYnJpIix7bG9jYWw6WyJDYWxpYnJpIiwiQ2FybGl0byJdLHN0eWxlOmRyLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJDYWxpYnJpLUJvbGQiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6ZnIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6cHIsZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQ2FsaWJyaS1Cb2xkSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOm1yLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJXaW5nZGluZ3MiLHtsb2NhbDpbIldpbmdkaW5ncyIsIlVSVyBEaW5nYmF0cyJdLHN0eWxlOmRyfV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSx3cj1uZXcgTWFwKFtbIkFyaWFsLUJsYWNrIiwiQXJpYWxCbGFjayJdXSk7ZnVuY3Rpb24gZ2V0RmFtaWx5TmFtZShlKXtjb25zdCB0PW5ldyBTZXQoWyJ0aGluIiwiZXh0cmFsaWdodCIsInVsdHJhbGlnaHQiLCJkZW1pbGlnaHQiLCJzZW1pbGlnaHQiLCJsaWdodCIsImJvb2siLCJyZWd1bGFyIiwibm9ybWFsIiwibWVkaXVtIiwiZGVtaWJvbGQiLCJzZW1pYm9sZCIsImJvbGQiLCJleHRyYWJvbGQiLCJ1bHRyYWJvbGQiLCJibGFjayIsImhlYXZ5IiwiZXh0cmFibGFjayIsInVsdHJhYmxhY2siLCJyb21hbiIsIml0YWxpYyIsIm9ibGlxdWUiLCJ1bHRyYWNvbmRlbnNlZCIsImV4dHJhY29uZGVuc2VkIiwiY29uZGVuc2VkIiwic2VtaWNvbmRlbnNlZCIsIm5vcm1hbCIsInNlbWlleHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmFleHBhbmRlZCIsInVsdHJhZXhwYW5kZWQiLCJib2xkaXRhbGljIl0pO3JldHVybiBlLnNwbGl0KC9bLSAsK10rL2cpLmZpbHRlcigoZT0+IXQuaGFzKGUudG9Mb3dlckNhc2UoKSkpKS5qb2luKCIgIil9ZnVuY3Rpb24gZ2VuZXJhdGVGb250KHthbGlhczplLGxvY2FsOnQscGF0aDppLGZhbGxiYWNrOmEsc3R5bGU6cix1bHRpbWF0ZTpzfSxuLG8sZz0hMCxjPSEwLEM9IiIpe2NvbnN0IGg9e3N0eWxlOm51bGwsdWx0aW1hdGU6bnVsbH07aWYodCl7Y29uc3QgZT1DP2AgJHtDfWA6IiI7Zm9yKGNvbnN0IGkgb2YgdCluLnB1c2goYGxvY2FsKCR7aX0ke2V9KWApfWlmKGUpe2NvbnN0IHQ9eXIuZ2V0KGUpLHM9Q3x8ZnVuY3Rpb24gZ2V0U3R5bGVUb0FwcGVuZChlKXtzd2l0Y2goZSl7Y2FzZSBmcjpyZXR1cm4iQm9sZCI7Y2FzZSBwcjpyZXR1cm4iSXRhbGljIjtjYXNlIG1yOnJldHVybiJCb2xkIEl0YWxpYyI7ZGVmYXVsdDppZigiYm9sZCI9PT1lPy53ZWlnaHQpcmV0dXJuIkJvbGQiO2lmKCJpdGFsaWMiPT09ZT8uc3R5bGUpcmV0dXJuIkl0YWxpYyJ9cmV0dXJuIiJ9KHIpO09iamVjdC5hc3NpZ24oaCxnZW5lcmF0ZUZvbnQodCxuLG8sZyYmIWEsYyYmIWkscykpfXImJihoLnN0eWxlPXIpO3MmJihoLnVsdGltYXRlPXMpO2lmKGcmJmEpe2NvbnN0IGU9eXIuZ2V0KGEpLHt1bHRpbWF0ZTp0fT1nZW5lcmF0ZUZvbnQoZSxuLG8sZyxjJiYhaSxDKTtoLnVsdGltYXRlfHw9dH1jJiZpJiZvJiZuLnB1c2goYHVybCgke299JHtpfSlgKTtyZXR1cm4gaH1mdW5jdGlvbiBnZXRGb250U3Vic3RpdHV0aW9uKGUsdCxpLGEscixzKXtpZihhLnN0YXJ0c1dpdGgoIkludmFsaWRQREZqc0ZvbnRfIikpcmV0dXJuIG51bGw7IlRydWVUeXBlIiE9PXMmJiJUeXBlMSIhPT1zfHwhL15bQS1aXXs2fVwrLy50ZXN0KGEpfHwoYT1hLnNsaWNlKDcpKTtjb25zdCBuPWE9bm9ybWFsaXplRm9udE5hbWUoYSk7bGV0IG89ZS5nZXQobik7aWYobylyZXR1cm4gbztsZXQgZz15ci5nZXQoYSk7aWYoIWcpZm9yKGNvbnN0W2UsdF1vZiB3cilpZihhLnN0YXJ0c1dpdGgoZSkpe2E9YCR7dH0ke2Euc3Vic3RyaW5nKGUubGVuZ3RoKX1gO2c9eXIuZ2V0KGEpO2JyZWFrfWxldCBjPSExO2lmKCFnKXtnPXlyLmdldChyKTtjPSEwfWNvbnN0IEM9YCR7dC5nZXREb2NJZCgpfV9zJHt0LmNyZWF0ZUZvbnRJZCgpfWA7aWYoIWcpe2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEpKXt3YXJuKGBDYW5ub3Qgc3Vic3RpdHV0ZSB0aGUgZm9udCBiZWNhdXNlIG9mIGl0cyBuYW1lOiAke2F9YCk7ZS5zZXQobixudWxsKTtyZXR1cm4gbnVsbH1jb25zdCB0PS9ib2xkL2dpLnRlc3QoYSksaT0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdChhKSxyPXQmJmkmJm1yfHx0JiZmcnx8aSYmcHJ8fGRyO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7Q31gLGd1ZXNzRmFsbGJhY2s6ITAsbG9hZGVkTmFtZTpDLGJhc2VGb250TmFtZTphLHNyYzpgbG9jYWwoJHthfSlgLHN0eWxlOnJ9O2Uuc2V0KG4sbyk7cmV0dXJuIG99Y29uc3QgaD1bXTtjJiZ2YWxpZGF0ZUZvbnROYW1lKGEpJiZoLnB1c2goYGxvY2FsKCR7YX0pYCk7Y29uc3R7c3R5bGU6bCx1bHRpbWF0ZTpRfT1nZW5lcmF0ZUZvbnQoZyxoLGkpLEU9bnVsbD09PVEsdT1FPyIiOmAsJHtRfWA7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKGEpfSIsJHtDfSR7dX1gLGd1ZXNzRmFsbGJhY2s6RSxsb2FkZWROYW1lOkMsYmFzZUZvbnROYW1lOmEsc3JjOmguam9pbigiLCIpLHN0eWxlOmx9O2Uuc2V0KG4sbyk7cmV0dXJuIG99Y2xhc3MgSW1hZ2VSZXNpemVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCYmdDw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aClyZXR1cm4hMTtjb25zdHtNQVhfRElNOml9PXRoaXM7aWYoZT5pfHx0PmkpcmV0dXJuITA7Y29uc3QgYT1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gYT50aGlzLk1BWF9BUkVBO2lmKGE8dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLl9nb29kU3F1YXJlTGVuZ3RoPU1hdGgubWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuX2dvb2RTcXVhcmVMZW5ndGg9dGhpcy5fZ3Vlc3NNYXgodGhpcy5fZ29vZFNxdWFyZUxlbmd0aCxpLDEyOCwwKTtyZXR1cm4gYT4odGhpcy5NQVhfQVJFQT10aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKX1zdGF0aWMgZ2V0IE1BWF9ESU0oKXtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9ESU0iLHRoaXMuX2d1ZXNzTWF4KDIwNDgsNjU1MzcsMCwxKSl9c3RhdGljIGdldCBNQVhfQVJFQSgpe3RoaXMuX2hhc01heEFyZWE9ITA7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfQVJFQSIsdGhpcy5fZ3Vlc3NNYXgoSW1hZ2VSZXNpemVyLl9nb29kU3F1YXJlTGVuZ3RoLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0TWF4QXJlYShlKXt0aGlzLl9oYXNNYXhBcmVhfHwodGhpcy5NQVhfQVJFQT1lPj4yKX1zdGF0aWMgX2FyZUdvb2REaW1zKGUsdCl7dHJ5e2NvbnN0IGk9bmV3IE9mZnNjcmVlbkNhbnZhcyhlLHQpLGE9aS5nZXRDb250ZXh0KCIyZCIpO2EuZmlsbFJlY3QoMCwwLDEsMSk7Y29uc3Qgcj1hLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhWzNdO2kud2lkdGg9aS5oZWlnaHQ9MTtyZXR1cm4gMCE9PXJ9Y2F0Y2h7cmV0dXJuITF9fXN0YXRpYyBfZ3Vlc3NNYXgoZSx0LGksYSl7Zm9yKDtlK2krMTx0Oyl7Y29uc3QgaT1NYXRoLmZsb29yKChlK3QpLzIpLHI9YXx8aTt0aGlzLl9hcmVHb29kRGltcyhpLHIpP2U9aTp0PWl9cmV0dXJuIGV9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdD0hMSl7cmV0dXJuIG5ldyBJbWFnZVJlc2l6ZXIoZSx0KS5fY3JlYXRlSW1hZ2UoKX1hc3luYyBfY3JlYXRlSW1hZ2UoKXtjb25zdCBlPXRoaXMuX2VuY29kZUJNUCgpLHQ9bmV3IEJsb2IoW2UuYnVmZmVyXSx7dHlwZToiaW1hZ2UvYm1wIn0pLGk9Y3JlYXRlSW1hZ2VCaXRtYXAodCkse01BWF9BUkVBOmEsTUFYX0RJTTpyfT1JbWFnZVJlc2l6ZXIse19pbWdEYXRhOnN9PXRoaXMse3dpZHRoOm4saGVpZ2h0Om99PXMsZz1NYXRoLm1heChuL3Isby9yLE1hdGguc3FydChuKm8vYSkpLGM9TWF0aC5tYXgoZywyKSxDPU1hdGgucm91bmQoMTAqKGcrMS4yNSkpLzEwL2MsaD1NYXRoLmZsb29yKE1hdGgubG9nMihDKSksbD1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO2xbMF09YztsLnNwbGljZSgtMSwxLEMvKDE8PGgpKTtsZXQgUT1uLEU9byx1PWF3YWl0IGk7Zm9yKGNvbnN0IGUgb2YgbCl7Y29uc3QgdD1RLGk9RTtRPU1hdGguZmxvb3IoUS9lKS0xO0U9TWF0aC5mbG9vcihFL2UpLTE7Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKFEsRSk7YS5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh1LDAsMCx0LGksMCwwLFEsRSk7dT1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfXMuZGF0YT1udWxsO3MuYml0bWFwPXU7cy53aWR0aD1RO3MuaGVpZ2h0PUU7cmV0dXJuIHN9X2VuY29kZUJNUCgpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnQsa2luZDppfT10aGlzLl9pbWdEYXRhO2xldCBhLHI9dGhpcy5faW1nRGF0YS5kYXRhLHM9bmV3IFVpbnQ4QXJyYXkoMCksbj1zLG89MDtzd2l0Y2goaSl7Y2FzZSBEOnthPTE7cz1uZXcgVWludDhBcnJheSh0aGlzLl9pc01hc2s/WzI1NSwyNTUsMjU1LDI1NSwwLDAsMCwwXTpbMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKTtjb25zdCBpPWUrNz4+MyxuPWkrMyYtNDtpZihpIT09bil7Y29uc3QgZT1uZXcgVWludDhBcnJheShuKnQpO2xldCBhPTA7Zm9yKGxldCBzPTAsbz10Kmk7czxvO3MrPWksYSs9billLnNldChyLnN1YmFycmF5KHMscytpKSxhKTtyPWV9YnJlYWt9Y2FzZSBTOmE9MjQ7aWYoMyZlKXtjb25zdCBpPTMqZSxhPWkrMyYtNCxzPWEtaSxuPW5ldyBVaW50OEFycmF5KGEqdCk7bGV0IG89MDtmb3IobGV0IGU9MCxhPXQqaTtlPGE7ZSs9aSl7Y29uc3QgdD1yLnN1YmFycmF5KGUsZStpKTtmb3IobGV0IGU9MDtlPGk7ZSs9Myl7bltvKytdPXRbZSsyXTtuW28rK109dFtlKzFdO25bbysrXT10W2VdfW8rPXN9cj1ufWVsc2UgZm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSs9Myl7Y29uc3QgdD1yW2VdO3JbZV09cltlKzJdO3JbZSsyXT10fWJyZWFrO2Nhc2UgazphPTMyO289MztuPW5ldyBVaW50OEFycmF5KDY4KTtjb25zdCBpPW5ldyBEYXRhVmlldyhuLmJ1ZmZlcik7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2kuc2V0VWludDMyKDAsMjU1LCEwKTtpLnNldFVpbnQzMig0LDY1MjgwLCEwKTtpLnNldFVpbnQzMig4LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMigxMiw0Mjc4MTkwMDgwLCEwKX1lbHNle2kuc2V0VWludDMyKDAsNDI3ODE5MDA4MCwhMCk7aS5zZXRVaW50MzIoNCwxNjcxMTY4MCwhMCk7aS5zZXRVaW50MzIoOCw2NTI4MCwhMCk7aS5zZXRVaW50MzIoMTIsMjU1LCEwKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQiKX1sZXQgZz0wO2NvbnN0IGM9NDArbi5sZW5ndGgsQz0xNCtjK3MubGVuZ3RoK3IubGVuZ3RoLGg9bmV3IFVpbnQ4QXJyYXkoQyksbD1uZXcgRGF0YVZpZXcoaC5idWZmZXIpO2wuc2V0VWludDE2KGcsMTk3NzgsITApO2crPTI7bC5zZXRVaW50MzIoZyxDLCEwKTtnKz00O2wuc2V0VWludDMyKGcsMCwhMCk7Zys9NDtsLnNldFVpbnQzMihnLDE0K2Mrcy5sZW5ndGgsITApO2crPTQ7bC5zZXRVaW50MzIoZyxjLCEwKTtnKz00O2wuc2V0SW50MzIoZyxlLCEwKTtnKz00O2wuc2V0SW50MzIoZywtdCwhMCk7Zys9NDtsLnNldFVpbnQxNihnLDEsITApO2crPTI7bC5zZXRVaW50MTYoZyxhLCEwKTtnKz0yO2wuc2V0VWludDMyKGcsbywhMCk7Zys9NDtsLnNldFVpbnQzMihnLDAsITApO2crPTQ7bC5zZXRJbnQzMihnLDAsITApO2crPTQ7bC5zZXRJbnQzMihnLDAsITApO2crPTQ7bC5zZXRVaW50MzIoZyxzLmxlbmd0aC80LCEwKTtnKz00O2wuc2V0VWludDMyKGcsMCwhMCk7Zys9NDtoLnNldChuLGcpO2crPW4ubGVuZ3RoO2guc2V0KHMsZyk7Zys9cy5sZW5ndGg7aC5zZXQocixnKTtyZXR1cm4gaH19SW1hZ2VSZXNpemVyLl9nb29kU3F1YXJlTGVuZ3RoPTIwNDg7Y29uc3QgYnI9MzI4NTM3NzUyMCxEcj00Mjk0OTAxNzYwLEZyPTY1NTM1O2NsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6YnI7dGhpcy5oMj1lPzQyOTQ5NjcyOTUmZTpicn11cGRhdGUoZSl7bGV0IHQsaTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7aT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjw9MjU1KXRbaSsrXT1yO2Vsc2V7dFtpKytdPXI+Pj44O3RbaSsrXT0yNTUmcn19fWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0YSBmb3JtYXQsIG11c3QgYmUgYSBzdHJpbmcgb3IgVHlwZWRBcnJheS4iKTt0PWUuc2xpY2UoKTtpPXQuYnl0ZUxlbmd0aH1jb25zdCBhPWk+PjIscj1pLTQqYSxzPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLGEpO2xldCBuPTAsbz0wLGc9dGhpcy5oMSxjPXRoaXMuaDI7Y29uc3QgQz0zNDMyOTE4MzUzLGg9NDYxODQ1OTA3LGw9MTE2MDEsUT0xMzcxNTtmb3IobGV0IGU9MDtlPGE7ZSsrKWlmKDEmZSl7bj1zW2VdO249bipDJkRyfG4qbCZGcjtuPW48PDE1fG4+Pj4xNztuPW4qaCZEcnxuKlEmRnI7Z149bjtnPWc8PDEzfGc+Pj4xOTtnPTUqZyszODY0MjkyMTk2fWVsc2V7bz1zW2VdO289bypDJkRyfG8qbCZGcjtvPW88PDE1fG8+Pj4xNztvPW8qaCZEcnxvKlEmRnI7Y149bztjPWM8PDEzfGM+Pj4xOTtjPTUqYyszODY0MjkyMTk2fW49MDtzd2l0Y2gocil7Y2FzZSAzOm5ePXRbNCphKzJdPDwxNjtjYXNlIDI6bl49dFs0KmErMV08PDg7Y2FzZSAxOm5ePXRbNCphXTtuPW4qQyZEcnxuKmwmRnI7bj1uPDwxNXxuPj4+MTc7bj1uKmgmRHJ8bipRJkZyOzEmYT9nXj1uOmNePW59dGhpcy5oMT1nO3RoaXMuaDI9Y31oZXhkaWdlc3QoKXtsZXQgZT10aGlzLmgxLHQ9dGhpcy5oMjtlXj10Pj4+MTtlPTM5ODE4MDY3OTcqZSZEcnwzNjA0NSplJkZyO3Q9NDI4MzU0MzUxMSp0JkRyfCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJkRyKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmRHJ8NjA0OTkqZSZGcjt0PTMzMDE4ODIzNjYqdCZEcnwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZEcik+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX1mdW5jdGlvbiBhZGRTdGF0ZShlLHQsaSxhLHIpe2xldCBzPWU7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aC0xO2U8aTtlKyspe2NvbnN0IGk9dFtlXTtzPXNbaV18fD1bXX1zW3QuYXQoLTEpXT17Y2hlY2tGbjppLGl0ZXJhdGVGbjphLHByb2Nlc3NGbjpyfX1jb25zdCBTcj1bXTthZGRTdGF0ZShTcixbVUEsTEEsJGUsTUFdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBpW3RdPT09VUE7Y2FzZSAxOnJldHVybiBpW3RdPT09TEE7Y2FzZSAyOnJldHVybiBpW3RdPT09JGU7Y2FzZSAzOnJldHVybiBpW3RdPT09TUF9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1yLTEsZz1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYoZzwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBjPTA7Y29uc3QgQz1bXTtsZXQgaD0wLGw9MSxRPTE7Zm9yKGxldCBlPTA7ZTxnO2UrKyl7Y29uc3QgdD1hW24rKGU8PDIpXSxpPWFbbysoZTw8MildWzBdO2lmKGwraS53aWR0aD4xZTMpe2M9TWF0aC5tYXgoYyxsKTtRKz1oKzI7bD0wO2g9MH1DLnB1c2goe3RyYW5zZm9ybTp0LHg6bCx5OlEsdzppLndpZHRoLGg6aS5oZWlnaHR9KTtsKz1pLndpZHRoKzI7aD1NYXRoLm1heChoLGkuaGVpZ2h0KX1jb25zdCBFPU1hdGgubWF4KGMsbCkrMSx1PVEraCsxLGQ9bmV3IFVpbnQ4QXJyYXkoRSp1KjQpLGY9RTw8Mjtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbysoZTw8MildWzBdLmRhdGEsaT1DW2VdLnc8PDI7bGV0IHI9MCxzPUNbZV0ueCtDW2VdLnkqRTw8MjtkLnNldCh0LnN1YmFycmF5KDAsaSkscy1mKTtmb3IobGV0IGE9MCxuPUNbZV0uaDthPG47YSsrKXtkLnNldCh0LnN1YmFycmF5KHIscitpKSxzKTtyKz1pO3MrPWZ9ZC5zZXQodC5zdWJhcnJheShyLWkscikscyk7Zm9yKDtzPj0wOyl7dFtzLTRdPXRbc107dFtzLTNdPXRbcysxXTt0W3MtMl09dFtzKzJdO3Rbcy0xXT10W3MrM107dFtzK2ldPXRbcytpLTRdO3RbcytpKzFdPXRbcytpLTNdO3RbcytpKzJdPXRbcytpLTJdO3RbcytpKzNdPXRbcytpLTFdO3MtPWZ9fWNvbnN0IHA9e3dpZHRoOkUsaGVpZ2h0OnV9O2lmKGUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhFLHUpO2UuZ2V0Q29udGV4dCgiMmQiKS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoZC5idWZmZXIpLEUsdSksMCwwKTtwLmJpdG1hcD1lLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO3AuZGF0YT1udWxsfWVsc2V7cC5raW5kPWs7cC5kYXRhPWR9aS5zcGxpY2Uocyw0KmcsQXQpO2Euc3BsaWNlKHMsNCpnLFtwLENdKTtyZXR1cm4gcysxfSkpO2FkZFN0YXRlKFNyLFtVQSxMQSxWZSxNQV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBpW3RdPT09VUE7Y2FzZSAxOnJldHVybiBpW3RdPT09TEE7Y2FzZSAyOnJldHVybiBpW3RdPT09VmU7Y2FzZSAzOnJldHVybiBpW3RdPT09TUF9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHthfWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPXItMTtsZXQgZz1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGc8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgYyxDLGg9ITE7Y29uc3QgbD1hW29dWzBdLFE9YVtuXVswXSxFPWFbbl1bMV0sdT1hW25dWzJdLGQ9YVtuXVszXTtpZihFPT09dSl7aD0hMDtjPW4rNDtsZXQgZT1vKzQ7Zm9yKGxldCB0PTE7dDxnO3QrKyxjKz00LGUrPTQpe0M9YVtjXTtpZihhW2VdWzBdIT09bHx8Q1swXSE9PVF8fENbMV0hPT1FfHxDWzJdIT09dXx8Q1szXSE9PWQpe3Q8MTA/aD0hMTpnPXQ7YnJlYWt9fX1pZihoKXtnPU1hdGgubWluKGcsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipnKTtjPW47Zm9yKGxldCB0PTA7dDxnO3QrKyxjKz00KXtDPWFbY107ZVt0PDwxXT1DWzRdO2VbMSsodDw8MSldPUNbNV19aS5zcGxpY2Uocyw0KmcsdHQpO2Euc3BsaWNlKHMsNCpnLFtsLFEsRSx1LGQsZV0pfWVsc2V7Zz1NYXRoLm1pbihnLDEwMCk7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PGc7dCsrKXtDPWFbbisodDw8MildO2NvbnN0IGk9YVtvKyh0PDwyKV1bMF07ZS5wdXNoKHtkYXRhOmkuZGF0YSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxpbnRlcnBvbGF0ZTppLmludGVycG9sYXRlLGNvdW50OmkuY291bnQsdHJhbnNmb3JtOkN9KX1pLnNwbGljZShzLDQqZyxfZSk7YS5zcGxpY2Uocyw0KmcsW2VdKX1yZXR1cm4gcysxfSkpO2FkZFN0YXRlKFNyLFtVQSxMQSx6ZSxNQV0sKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLTI7cmV0dXJuIDA9PT10W2ldWzFdJiYwPT09dFtpXVsyXX0pLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBpW3RdPT09VUE7Y2FzZSAxOmlmKGlbdF0hPT1MQSlyZXR1cm4hMTtjb25zdCByPWUuaUN1cnItMixzPWFbcl1bMF0sbj1hW3JdWzNdO3JldHVybiBhW3RdWzBdPT09cyYmMD09PWFbdF1bMV0mJjA9PT1hW3RdWzJdJiZhW3RdWzNdPT09bjtjYXNlIDI6aWYoaVt0XSE9PXplKXJldHVybiExO2NvbnN0IG89YVtlLmlDdXJyLTFdWzBdO3JldHVybiBhW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIGlbdF09PT1NQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7cn1gKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89YVtyLTFdWzBdLGc9YVtuXVswXSxjPWFbbl1bM10sQz1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDFlMyk7aWYoQzwzKXJldHVybiB0LSh0LXMpJTQ7Y29uc3QgaD1uZXcgRmxvYXQzMkFycmF5KDIqQyk7bGV0IGw9bjtmb3IobGV0IGU9MDtlPEM7ZSsrLGwrPTQpe2NvbnN0IHQ9YVtsXTtoW2U8PDFdPXRbNF07aFsxKyhlPDwxKV09dFs1XX1jb25zdCBRPVtvLGcsYyxoXTtpLnNwbGljZShzLDQqQyxldCk7YS5zcGxpY2Uocyw0KkMsUSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShTcixbZWUsbmUsQ2UsbGUsdGVdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVTaG93VGV4dEdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTQpKSU1O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIGlbdF09PT1lZTtjYXNlIDE6cmV0dXJuIGlbdF09PT1uZTtjYXNlIDI6cmV0dXJuIGlbdF09PT1DZTtjYXNlIDM6aWYoaVt0XSE9PWxlKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0zLHM9YVtyXVswXSxuPWFbcl1bMV07cmV0dXJuIGFbdF1bMF09PT1zJiZhW3RdWzFdPT09bjtjYXNlIDQ6cmV0dXJuIGlbdF09PT10ZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVTaG93VGV4dEdyb3VwIC0gaW52YWxpZCBwb3M6ICR7cn1gKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci00LG49ci0zLG89ci0yLGc9ci0xLGM9cixDPWFbbl1bMF0saD1hW25dWzFdO2xldCBsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNSksMWUzKTtpZihsPDMpcmV0dXJuIHQtKHQtcyklNTtsZXQgUT1zO2lmKHM+PTQmJmlbcy00XT09PWlbbl0mJmlbcy0zXT09PWlbb10mJmlbcy0yXT09PWlbZ10mJmlbcy0xXT09PWlbY10mJmFbcy00XVswXT09PUMmJmFbcy00XVsxXT09PWgpe2wrKztRLT01fWxldCBFPVErNDtmb3IobGV0IGU9MTtlPGw7ZSsrKXtpLnNwbGljZShFLDMpO2Euc3BsaWNlKEUsMyk7RSs9Mn1yZXR1cm4gRSsxfSkpO2NsYXNzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5xdWV1ZT1lfV9vcHRpbWl6ZSgpe31wdXNoKGUsdCl7dGhpcy5xdWV1ZS5mbkFycmF5LnB1c2goZSk7dGhpcy5xdWV1ZS5hcmdzQXJyYXkucHVzaCh0KTt0aGlzLl9vcHRpbWl6ZSgpfWZsdXNoKCl7fXJlc2V0KCl7fX1jbGFzcyBRdWV1ZU9wdGltaXplciBleHRlbmRzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdGF0ZT1udWxsO3RoaXMuY29udGV4dD17aUN1cnI6MCxmbkFycmF5OmUuZm5BcnJheSxhcmdzQXJyYXk6ZS5hcmdzQXJyYXksaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITF9O3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5jb250ZXh0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9X29wdGltaXplKCl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXk7bGV0IHQ9dGhpcy5sYXN0UHJvY2Vzc2VkLGk9ZS5sZW5ndGgsYT10aGlzLnN0YXRlLHI9dGhpcy5tYXRjaDtpZighYSYmIXImJnQrMT09PWkmJiFTcltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWk7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxpOyl7aWYocil7aWYoKDAsci5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLHIucHJvY2Vzc0ZuKShzLHQrMSk7aT1lLmxlbmd0aDtyPW51bGw7YT1udWxsO2lmKHQ+PWkpYnJlYWt9YT0oYXx8U3IpW2VbdF1dO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpKXtzLmlDdXJyPXQ7dCsrO2lmKCFhLmNoZWNrRm58fCgwLGEuY2hlY2tGbikocykpe3I9YTthPW51bGx9ZWxzZSBhPW51bGx9ZWxzZSB0Kyt9dGhpcy5zdGF0ZT1hO3RoaXMubWF0Y2g9cjt0aGlzLmxhc3RQcm9jZXNzZWQ9dH1mbHVzaCgpe2Zvcig7dGhpcy5tYXRjaDspe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5Lmxlbmd0aDt0aGlzLmxhc3RQcm9jZXNzZWQ9KDAsdGhpcy5tYXRjaC5wcm9jZXNzRm4pKHRoaXMuY29udGV4dCxlKTt0aGlzLm1hdGNoPW51bGw7dGhpcy5zdGF0ZT1udWxsO3RoaXMuX29wdGltaXplKCl9fXJlc2V0KCl7dGhpcy5zdGF0ZT1udWxsO3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH19Y2xhc3MgT3BlcmF0b3JMaXN0e3N0YXRpYyBDSFVOS19TSVpFPTFlMztzdGF0aWMgQ0hVTktfU0laRV9BQk9VVD10aGlzLkNIVU5LX1NJWkUtNTtjb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTt0aGlzLm9wdGltaXplcj0hdHx8ZSZFP25ldyBOdWxsT3B0aW1pemVyKHRoaXMpOm5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMub3B0aW1pemVyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1NQXx8ZT09PXRlKSkmJnRoaXMuZmx1c2goKX1hZGRJbWFnZU9wcyhlLHQsaSl7dm9pZCAwIT09aSYmdGhpcy5hZGRPcCh2ZSxbIk9DIixpXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoYkEsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTppLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcj0wO3I8YTtyKyspc3dpdGNoKHRbcl0pe2Nhc2UgJGU6Y2FzZSBBdDpjYXNlIFZlOmNvbnN0IHQ9aVtyXVswXTshdC5jYWNoZWQmJnQuZGF0YT8uYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJmUucHVzaCh0LmRhdGEuYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBpPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1pO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOml9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWZ1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxpLGEpeyhlPXQrZSppKTwwP2U9MDplPmEmJihlPWEpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1yKnM7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgZz1pL3IsYz1hL3M7bGV0IEMsaCxsLFEsRT0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KHIpLGQ9aTtmb3IoQz0wO0M8cjtDKyspdVtDXT1NYXRoLmZsb29yKEMqZyk7Zm9yKEM9MDtDPHM7QysrKXtsPU1hdGguZmxvb3IoQypjKSpkO2ZvcihoPTA7aDxyO2grKyl7UT1sK3VbaF07b1tFKytdPWVbUV19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHNtYXNrOnI9bnVsbCxtYXNrOnM9bnVsbCxpc01hc2s6bj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSl7dGhpcy5pbWFnZT1pO2NvbnN0IGM9aS5kaWN0LEM9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaDtpZihDIGluc3RhbmNlb2YgTmFtZSloPUMubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoQykpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKENbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYoaD10Lm5hbWUpfXN3aXRjaChoKXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxjb21wb25lbnRzQ291bnQ6aS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmkuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoaS5zdHJlYW0pKTtpLnN0cmVhbS5yZXNldCgpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmhhcygiU01hc2tJbkRhdGEiKX07YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6aS5iaXRzUGVyQ29tcG9uZW50PTE7aS5udW1Db21wcz0xfWxldCBsPWMuZ2V0KCJXIiwiV2lkdGgiKSxRPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihpLndpZHRoKSYmaS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGkuaGVpZ2h0KSYmaS5oZWlnaHQ+MCYmKGkud2lkdGghPT1sfHxpLmhlaWdodCE9PVEpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2w9aS53aWR0aDtRPWkuaGVpZ2h0fWlmKGw8MXx8UTwxKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtsfSBvciBoZWlnaHQ6ICR7UX1gKTt0aGlzLndpZHRoPWw7dGhpcy5oZWlnaHQ9UTt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IEU9aS5iaXRzUGVyQ29tcG9uZW50O2lmKCFFKXtFPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIUUpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO0U9MX19dGhpcy5icGM9RTtpZighdGhpcy5pbWFnZU1hc2spe2xldCByPWMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpO2NvbnN0IHM9ISFyO2lmKHMpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnI9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cj1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnI9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLEUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PEUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcj10aGlzLmRlY29kZVtpXSxzPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8ocy1yKS9lOnMtcjt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9yOmUqcn19aWYocil0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtzLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9c31zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxDPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOkMmJihDIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShDKT9nPUM6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnN9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8ciYmIShuPT09bykpaWYocil7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihyKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6cyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnI9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDprLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cyxiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cixpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnN9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sclt0XSxzKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1pKmEqcjtsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgZz1pKnIsYz0oMTw8dCktMTtsZXQgQyxoLGw9MDtpZigxPT09dCl7bGV0IHQsaSxyO2ZvcihsZXQgcz0wO3M8YTtzKyspe2k9bCsoLTgmZyk7cj1sK2c7Zm9yKDtsPGk7KXtoPWVbbysrXTtuW2xdPWg+PjcmMTtuW2wrMV09aD4+NiYxO25bbCsyXT1oPj41JjE7bltsKzNdPWg+PjQmMTtuW2wrNF09aD4+MyYxO25bbCs1XT1oPj4yJjE7bltsKzZdPWg+PjEmMTtuW2wrN109MSZoO2wrPTh9aWYobDxyKXtoPWVbbysrXTt0PTEyODtmb3IoO2w8cjspe25bbCsrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihsPTAsQz1zO2w8QzsrK2wpe2lmKGwlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcj1oPj5hO3I8MD9yPTA6cj5jJiYocj1jKTtuW2xdPXI7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1hc3luYyBmaWxsT3BhY2l0eShlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsQyxoLGw7aWYocyl7Zz1zLndpZHRoO2M9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKEM9MCxoPWcqYztDPGg7KytDKW9bQ109MjU1LW9bQ107Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihDPTAsaD10Kmk7QzxoOysrQyl7bGV0IHQ9MDtjb25zdCBpPUMqZTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9cltpK2xdLGE9MipsO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW0NdPXR9fX1pZihvKWZvcihDPTAsbD0zLGg9dCphO0M8aDsrK0MsbCs9NCllW2xdPW9bQ107ZWxzZSBmb3IoQz0wLGw9MyxoPXQqYTtDPGg7KytDLGwrPTQpZVtsXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxzPXJbMF0sbj1yWzFdLG89clsyXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1zKSphK3M7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnMqZys3Pj4zLEM9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZigiRGV2aWNlUkdCQSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSl7ci5raW5kPWs7Y29uc3QgZT1yLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qbio0LHt9KTtyZXR1cm4gdD9DP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShyLCExKTp0aGlzLmNyZWF0ZUJpdG1hcChrLGksYSxlKTpyfWlmKCFlKXtsZXQgZTsiRGV2aWNlR3JheSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSYmMT09PWc/ZT1EOiJEZXZpY2VSR0IiIT09dGhpcy5jb2xvclNwYWNlLm5hbWV8fDghPT1nfHx0aGlzLm5lZWRzRGVjb2RlfHwoZT1TKTtpZihlJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmaT09PW4mJmE9PT1vKXtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIEM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOnMsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8scyk7ci5raW5kPWU7ci5kYXRhPXM7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1ELCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhQyl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOiEwfSk7cmV0dXJuIHRoaXMuY3JlYXRlQml0bWFwKGssaSxhLHQpfX1lbHNlIHN3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj0zO2Nhc2UiRGV2aWNlUkdCIjpjYXNlIkRldmljZUNNWUsiOnIua2luZD1TO3IuZGF0YT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmksZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIEM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9fX1jb25zdCBoPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse2ludGVybmFsOiEwfSksbD0wfGgubGVuZ3RoL2MqYS9vLFE9dGhpcy5nZXRDb21wb25lbnRzKGgpO2xldCBFLHUsZCxmLHAsbTtpZih0JiYhQyl7ZD1uZXcgT2Zmc2NyZWVuQ2FudmFzKGksYSk7Zj1kLmdldENvbnRleHQoIjJkIik7cD1mLmNyZWF0ZUltYWdlRGF0YShpLGEpO209cC5kYXRhfXIua2luZD1rO2lmKGV8fHRoaXMuc21hc2t8fHRoaXMubWFzayl7dCYmIUN8fChtPW5ldyBVaW50OENsYW1wZWRBcnJheShpKmEqNCkpO0U9MTt1PSEwO2F3YWl0IHRoaXMuZmlsbE9wYWNpdHkobSxpLGEsbCxRKX1lbHNle2lmKCF0fHxDKXtyLmtpbmQ9UzttPW5ldyBVaW50OENsYW1wZWRBcnJheShpKmEqMyk7RT0wfWVsc2V7bmV3IFVpbnQzMkFycmF5KG0uYnVmZmVyKS5maWxsKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1KTtFPTF9dT0hMX10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihRKTt0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihtLG4sbyxpLGEsbCxnLFEsRSk7dSYmdGhpcy51bmRvUHJlYmxlbmQobSxpLGwpO2lmKHQmJiFDKXtmLnB1dEltYWdlRGF0YShwLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDppLGhlaWdodDphLGJpdG1hcDpkLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fXIuZGF0YT1tO3JldHVybiBDP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShyKTpyfWFzeW5jIGZpbGxHcmF5QnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5udW1Db21wcztpZigxIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFJlYWRpbmcgZ3JheSBzY2FsZSBmcm9tIGEgY29sb3IgaW1hZ2U6ICR7dH1gKTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMuYnBjLHM9aSp0KnIrNz4+MyxuPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhhKnMse2ludGVybmFsOiEwfSksbz10aGlzLmdldENvbXBvbmVudHMobik7bGV0IGcsYztpZigxPT09cil7Yz1pKmE7aWYodGhpcy5uZWVkc0RlY29kZSlmb3IoZz0wO2c8YzsrK2cpZVtnXT1vW2ddLTEmMjU1O2Vsc2UgZm9yKGc9MDtnPGM7KytnKWVbZ109MjU1Ji1vW2ddO3JldHVybn10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihvKTtjPWkqYTtjb25zdCBDPTI1NS8oKDE8PHIpLTEpO2ZvcihnPTA7ZzxjOysrZyllW2ddPUMqb1tnXX1jcmVhdGVCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsaSkscz1yLmdldENvbnRleHQoIjJkIik7bGV0IG47aWYoZT09PWspbj1uZXcgSW1hZ2VEYXRhKGEsdCxpKTtlbHNle249cy5jcmVhdGVJbWFnZURhdGEodCxpKTtjb252ZXJ0VG9SR0JBKHtraW5kOmUsc3JjOmEsZGVzdDpuZXcgVWludDMyQXJyYXkobi5kYXRhLmJ1ZmZlciksd2lkdGg6dCxoZWlnaHQ6aSxpbnZlcnNlRGVjb2RlOnRoaXMubmVlZHNEZWNvZGV9KX1zLnB1dEltYWdlRGF0YShuLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDppLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKHN8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIG47YXNzZXJ0KG4gaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobil9fWNvbnN0IGtyPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxScj0xLE5yPTIsR3I9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGUsdCl7dC5vYmpJZCYmZS5hZGREZXBlbmRlbmN5KHQub2JqSWQpO2UuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO3QuZm49PT1WZSYmdC5hcmdzWzBdPy5jb3VudD4wJiZ0LmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIFRJTUVfU0xPVF9EVVJBVElPTl9NUz0yMDtzdGF0aWMgQ0hFQ0tfVElNRV9FVkVSWT0xMDA7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6aSxpZEZhY3Rvcnk6YSxmb250Q2FjaGU6cixidWlsdEluQ01hcENhY2hlOnMsc3RhbmRhcmRGb250RGF0YUNhY2hlOm4sZ2xvYmFsSW1hZ2VDYWNoZTpvLHN5c3RlbUZvbnRDYWNoZTpnLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLmlkRmFjdG9yeT1hO3RoaXMuZm9udENhY2hlPXI7dGhpcy5idWlsdEluQ01hcENhY2hlPXM7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bjt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLnN5c3RlbUZvbnRDYWNoZT1nO3RoaXMub3B0aW9ucz1jfHxrcjt0aGlzLnR5cGUzRm9udFJlZnM9bnVsbDt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IFJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyk7SW1hZ2VSZXNpemVyLnNldE1heEFyZWEodGhpcy5vcHRpb25zLmNhbnZhc01heEFyZWFJbkJ5dGVzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9Z2V0IHBhcnNpbmdUeXBlM0ZvbnQoKXtyZXR1cm4hIXRoaXMudHlwZTNGb250UmVmc31jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3QgaT1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IGE9W2VdLHI9dGhpcy54cmVmO2Zvcig7YS5sZW5ndGg7KXtjb25zdCBlPWEuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoaS5oYXMoZSkpY29udGludWU7dHJ5e2U9ci5mZXRjaChlKX1jYXRjaCh0KXtpLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCBzPWUuZ2V0KCJYT2JqZWN0Iik7aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHMuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZpLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IWkuaGFzKHQub2JqSWQpKSl7YS5wdXNoKHQpO3Qub2JqSWQmJmkucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgaSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBpO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxhPWF3YWl0IGZldGNoKHQpO2lmKCFhLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7YS5zdGF0dXNUZXh0fSIuYCk7aT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgYS5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6d0EuQklOQVJZfX1lbHNlIGk9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCdWlsdEluQ01hcCIse25hbWU6ZX0pO2kuY29tcHJlc3Npb25UeXBlIT09d0EuTk9ORSYmdGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgaT1YaSgpW2VdO2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCl7Y29uc3QgZT1gJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke2l9YCx0PWF3YWl0IGZldGNoKGUpO3Qub2s/YT1uZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpOndhcm4oYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7YT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTppfSl9Y2F0Y2goZSl7d2FybihgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHtpfSIgd2l0aCAiJHtlfSIuYCl9aWYoIWEpcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIG5ldyBTdHJlYW0oYSl9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsaSxhLHIscyxuKXtjb25zdCBvPXQuZGljdCxnPWxvb2t1cE1hdHJpeChvLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKSxjPWxvb2t1cE5vcm1hbFJlY3Qoby5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBDLGg7by5oYXMoIk9DIikmJihDPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PUMmJmEuYWRkT3AodmUsWyJPQyIsQ10pO2NvbnN0IGw9by5nZXQoIkdyb3VwIik7aWYobCl7aD17bWF0cml4OmcsYmJveDpjLHNtYXNrOmksaXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9O2xldCB0PW51bGw7aWYoaXNOYW1lKGwuZ2V0KCJTIiksIlRyYW5zcGFyZW5jeSIpKXtoLmlzb2xhdGVkPWwuZ2V0KCJJIil8fCExO2gua25vY2tvdXQ9bC5nZXQoIksiKXx8ITE7aWYobC5oYXMoIkNTIikpe2NvbnN0IGk9bC5nZXRSYXcoIkNTIiksYT1Db2xvclNwYWNlLmdldENhY2hlZChpLHRoaXMueHJlZixuKTt0PWF8fGF3YWl0IHRoaXMucGFyc2VDb2xvclNwYWNlKHtjczppLHJlc291cmNlczplLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KX19aWYoaT8uYmFja2Ryb3Ape3R8fD1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2kuYmFja2Ryb3A9dC5nZXRSZ2IoaS5iYWNrZHJvcCwwKX1hLmFkZE9wKFdlLFtoXSl9Y29uc3QgUT1sP1tnLG51bGxdOltnLGNdO2EuYWRkT3AoT2UsUSk7YXdhaXQgdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6cixyZXNvdXJjZXM6by5nZXQoIlJlc291cmNlcyIpfHxlLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpzfSk7YS5hZGRPcChQZSxbXSk7bCYmYS5hZGRPcChqZSxbaF0pO3ZvaWQgMCE9PUMmJmEuYWRkT3AoVGUsW10pfV9zZW5kSW1nRGF0YShlLHQsaT0hMSl7Y29uc3QgYT10P1t0LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcl06bnVsbDtyZXR1cm4gdGhpcy5wYXJzaW5nVHlwZTNGb250fHxpP3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtlLCJJbWFnZSIsdF0sYSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW2UsdGhpcy5wYWdlSW5kZXgsIkltYWdlIix0XSxhKX1hc3luYyBidWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmk9ITEsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cixsb2NhbEltYWdlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3Qgbz10LmRpY3QsZz1vLm9iaklkLGM9by5nZXQoIlciLCJXaWR0aCIpLEM9by5nZXQoIkgiLCJIZWlnaHQiKTtpZighY3x8Im51bWJlciIhPXR5cGVvZiBjfHwhQ3x8Im51bWJlciIhPXR5cGVvZiBDKXt3YXJuKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtyZXR1cm59Y29uc3QgaD10aGlzLm9wdGlvbnMubWF4SW1hZ2VTaXplO2lmKC0xIT09aCYmYypDPmgpe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oZSk7cmV0dXJufXRocm93IG5ldyBFcnJvcihlKX1sZXQgbDtvLmhhcygiT0MiKSYmKGw9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhvLmdldCgiT0MiKSxlKSk7bGV0IFEsRTtpZihvLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2NvbnN0IGU9by5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9Yys3Pj4zLG49dC5nZXRCeXRlcyhpKkMpLGg9by5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7UT1QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OkMsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmV9KTtRLmNhY2hlZD0hIXI7RT1bUV07YS5hZGRJbWFnZU9wcyhWZSxFLGwpO2lmKHIpe2NvbnN0IGU9e2ZuOlZlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bH07cy5zZXQocixnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1RPWF3YWl0IFBERkltYWdlLmNyZWF0ZU1hc2soe2ltZ0FycmF5Om4sd2lkdGg6YyxoZWlnaHQ6QyxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTp0IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6aD8uWzBdPjAsaW50ZXJwb2xhdGU6ZSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9KTtpZihRLmlzU2luZ2xlT3BhcXVlUGl4ZWwpe2EuYWRkSW1hZ2VPcHMoaXQsW10sbCk7aWYocil7Y29uc3QgZT17Zm46aXQsYXJnczpbXSxvcHRpb25hbENvbnRlbnQ6bH07cy5zZXQocixnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1jb25zdCB1PWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2EuYWRkRGVwZW5kZW5jeSh1KTtRLmRhdGFMZW49US5iaXRtYXA/US53aWR0aCpRLmhlaWdodCo0OlEuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEodSxRKTtFPVt7ZGF0YTp1LHdpZHRoOlEud2lkdGgsaGVpZ2h0OlEuaGVpZ2h0LGludGVycG9sYXRlOlEuaW50ZXJwb2xhdGUsY291bnQ6MX1dO2EuYWRkSW1hZ2VPcHMoVmUsRSxsKTtpZihyKXtjb25zdCBlPXtvYmpJZDp1LGZuOlZlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bH07cy5zZXQocixnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1pZihpJiZjK0M8MjAwJiYhby5oYXMoIlNNYXNrIikmJiFvLmhhcygiTWFzayIpKXt0cnl7Y29uc3Qgcj1uZXcgUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KTtRPWF3YWl0IHIuY3JlYXRlSW1hZ2VEYXRhKCEwLCExKTthLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPXRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDthLmFkZEltYWdlT3BzKCRlLFtRXSxsKX1jYXRjaChlKXtjb25zdCB0PWBVbmFibGUgdG8gZGVjb2RlIGlubGluZSBpbWFnZTogIiR7ZX0iLmA7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IEVycm9yKHQpO3dhcm4odCl9cmV0dXJufWxldCB1PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsZD0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpdT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3V9YDtlbHNlIGlmKHImJmcpe2Q9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGcsdGhpcy5wYWdlSW5kZXgpO2lmKGQpe2Fzc2VydCghaSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt1PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7dX1gfX1hLmFkZERlcGVuZGVuY3kodSk7RT1bdSxjLENdO2EuYWRkSW1hZ2VPcHMoemUsRSxsKTtpZihkKXtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKGcpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDp1LGZuOnplLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bCxieXRlU2l6ZTowfSk7dGhpcy5fc2VuZEltZ0RhdGEodSxudWxsLGQpO3JldHVybn1pZihjKkM+MjVlNHx8by5oYXMoIlNNYXNrIil8fG8uaGFzKCJNYXNrIikpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbdSwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOnUsZm46emUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpsLGJ5dGVTaXplOjB9KTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoZyxlKTtyZXR1cm59fX1QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSkudGhlbigoYXN5bmMgZT0+e1E9YXdhaXQgZS5jcmVhdGVJbWFnZURhdGEoITEsdGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKTtRLmRhdGFMZW49US5iaXRtYXA/US53aWR0aCpRLmhlaWdodCo0OlEuZGF0YS5sZW5ndGg7US5yZWY9ZztkJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoZyxRLmRhdGFMZW4pO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh1LFEsZCl9KSkuY2F0Y2goKGU9Pnt3YXJuKGBVbmFibGUgdG8gZGVjb2RlIGltYWdlICIke3V9IjogIiR7ZX0iLmApO2cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGREZWNvZGVGYWlsZWQoZyk7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHUsbnVsbCxkKX0pKTtpZihyKXtjb25zdCBlPXtvYmpJZDp1LGZuOnplLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bH07cy5zZXQocixnLGUpO2lmKGcpe3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpO2QmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOnUsZm46emUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpsLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxpLGEscixzKXtjb25zdCBuPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGc9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihnKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGcpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtpWzBdPWEvMjU1O2UoaSwwLGksMCk7dFthXT0yNTUqaVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbixvLGksYSxyLnN0YXRlLmNsb25lKCkscyl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGk9W107bGV0IGE9MCxyPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTthKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2kucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbj1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cyhvLDAsbywwKTtuW2VdPTI1NSpvWzBdfDB9aS5wdXNoKG4pO3IrK31yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09cj9udWxsOml9aGFuZGxlVGlsaW5nVHlwZShlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9bmV3IE9wZXJhdG9yTGlzdCxjPURpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbci5nZXQoIlJlc291cmNlcyIpLGldfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06YSx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0Omd9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGk9Zy5nZXRJUigpLGE9Z2V0VGlsaW5nUGF0dGVybklSKGkscix0KTtzLmFkZERlcGVuZGVuY2llcyhnLmRlcGVuZGVuY2llcyk7cy5hZGRPcChlLGEpO3Iub2JqSWQmJm8uc2V0KG51bGwsci5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6aSxkaWN0OnJ9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIiR7ZX0iLmApfX0pKX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxpLGEscixzLG49bnVsbCxvPW51bGwpe2NvbnN0IGc9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsO2xldCBjPWF3YWl0IHRoaXMubG9hZEZvbnQoZyxpLGUsbixvKTtpZihjLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGMubG9hZFR5cGUzRGF0YSh0aGlzLGUscik7YS5hZGREZXBlbmRlbmNpZXMoYy50eXBlM0RlcGVuZGVuY2llcyl9Y2F0Y2goZSl7Yz1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKSxkaWN0OmMuZm9udCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pfXMuZm9udD1jLmZvbnQ7Yy5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGMubG9hZGVkTmFtZX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgaT10LmZvbnQsYT1pLmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZiKXx8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxpLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoaSxhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBhfWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OmEsdGFzazpyLHN0YXRlTWFuYWdlcjpzLGxvY2FsR1N0YXRlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSl7Y29uc3QgZz10Lm9iaklkO2xldCBjPSEwO2NvbnN0IEM9W107bGV0IGg9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IG49dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpDLnB1c2goW2Esbl0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsblswXSxpLHIscy5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO0MucHVzaChbYSxbZSxuWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6Qy5wdXNoKFthLG5vcm1hbGl6ZUJsZW5kTW9kZShuKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShuLCJOb25lIikpe0MucHVzaChbYSwhMV0pO2JyZWFrfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjPSExO2g9aC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhuLGUsaSxyLHMsbykpKTtDLnB1c2goW2EsITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihuKTtDLnB1c2goW2EsdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSk7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKX19YXdhaXQgaDtDLmxlbmd0aD4wJiZpLmFkZE9wKHhBLFtDXSk7YyYmbi5zZXQoYSxnLEMpfWxvYWRGb250KGUsdCxpLGE9bnVsbCxyPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWkuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpDfT1nLGg9cyBpbnN0YW5jZW9mIFJlZjtsZXQgbDtpZihDJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW0NdKXtjb25zdCB0PWVbQ10uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVtDXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtDXS5hbGlhc1JlZj1zKTtsPWVbQ10uZm9udElEfWVsc2UgbD10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQobD8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHMsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke2x9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtsfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCByPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHI8MHx8ZS5mbkFycmF5W3JdIT09YXQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoVUEsbnVsbCl9bGV0IHI7c3dpdGNoKHQpe2Nhc2UgcUE6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cj1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBIQTpjYXNlIEpBOnI9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cj1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AoYXQsW1t0XSxpLHJdKTthJiZlLmFkZE9wKE1BLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtyXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHM9YVsyXTtzd2l0Y2godCl7Y2FzZSBxQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtzWzBdPU1hdGgubWluKHNbMF0saVswXSxlKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSx0KTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSxlKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSx0KTticmVhaztjYXNlIEhBOmNhc2UgSkE6c1swXT1NYXRoLm1pbihzWzBdLGlbMF0pO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdKTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtzLCJQYXR0ZXJuIixyXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3MsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHJdKTtyZXR1cm4gc31oYW5kbGVDb2xvck4oZSx0LGksYSxyLHMsbixvLGcsYyl7Y29uc3QgQz1pLnBvcCgpO2lmKEMgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXIuZ2V0UmF3KEMubmFtZSksbD1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKGwpdHJ5e2NvbnN0IHI9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHM9Z2V0VGlsaW5nUGF0dGVybklSKGwub3BlcmF0b3JMaXN0SVIsbC5kaWN0LHIpO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcj1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxDPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKEM9PT1Scil7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxRLHIsZSxuLGcpfWlmKEM9PT1Ocil7Y29uc3QgaT1yLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1sb29rdXBNYXRyaXgoci5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsYSxpXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtDfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7Q31gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsaSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoYTwyKSYmciBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChyLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6aS5wdXNoKHIubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7ci5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCByPTE7cjxhO3IrKyl7Y29uc3QgYT1lW3JdLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT1bXTtpLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihzLHQsZSl9ZWxzZSBhIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGk7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2k9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtpPWV9Y29uc3QgYT1pLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOmkub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9aS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9aS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBpIG9mIHQpZS5wdXNoKGkudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6YSxpZHM6ZSxwb2xpY3k6aS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDpzPW51bGx9KXtpfHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBuPXRoaXMsbz10aGlzLnhyZWY7bGV0IGc9ITE7Y29uc3QgYz1uZXcgTG9jYWxJbWFnZUNhY2hlLEM9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGg9bmV3IExvY2FsR1N0YXRlQ2FjaGUsbD1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsUT1uZXcgTWFwLEU9aS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx1PWkuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksZD1uZXcgU3RhdGVNYW5hZ2VyKHIpLGY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG8sZCkscD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1mLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylhLmFkZE9wKE1BLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxhLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxyKX1jYXRjaChlKXtyKGUpfX0pLHIpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtwLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgeSx3LGIsRCxTLGs7Zm9yKDshKHk9cC5jaGVjaygpKTspe20uYXJncz1udWxsO2lmKCFmLnJlYWQobSkpYnJlYWs7bGV0IGU9bS5hcmdzLHI9bS5mbjtzd2l0Y2goMHxyKXtjYXNlIExlOms9ZVswXWluc3RhbmNlb2YgTmFtZTtTPWVbMF0ubmFtZTtpZihrKXtjb25zdCB0PWMuZ2V0QnlOYW1lKFMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBzPUUuZ2V0UmF3KFMpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9Yy5nZXRCeVJlZihzKXx8bi5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2UoKTtyZXR1cm59Y29uc3QgaT1uLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShzLG4ucGFnZUluZGV4KTtpZihpKXthLmFkZERlcGVuZGVuY3koaS5vYmpJZCk7YS5hZGRJbWFnZU9wcyhpLmZuLGkuYXJncyxpLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1zPW8uZmV0Y2gocyl9aWYoIShzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9cy5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWcubmFtZSlpZigiSW1hZ2UiIT09Zy5uYW1lKXtpZigiUFMiIT09Zy5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5oYW5kbGVkIFhPYmplY3Qgc3VidHlwZSAke2cubmFtZX1gKTtpbmZvKCJJZ25vcmVkIFhPYmplY3Qgc3VidHlwZSBQUyIpO2UoKX1lbHNlIG4uYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmksaW1hZ2U6cyxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpTLGxvY2FsSW1hZ2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KS50aGVuKGUscik7ZWxzZXtkLnNhdmUoKTtuLmJ1aWxkRm9ybVhPYmplY3QoaSxzLG51bGwsYSx0LGQuc3RhdGUuY2xvbmUoKSxDKS50aGVuKChmdW5jdGlvbigpe2QucmVzdG9yZSgpO2UoKX0pLHIpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbi5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIG5lOnZhciBSPWVbMV07bmV4dChuLmhhbmRsZVNldEZvbnQoaSxlLG51bGwsYSx0LGQuc3RhdGUscykudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2EuYWRkT3AobmUsW2UsUl0pfSkpKTtyZXR1cm47Y2FzZSBlZTpnPSEwO2JyZWFrO2Nhc2UgdGU6Zz0hMTticmVhaztjYXNlIE1lOnZhciBOPWVbMF0uY2FjaGVLZXk7aWYoTil7Y29uc3QgdD1jLmdldEJ5TmFtZShOKTtpZih0KXthZGRMb2NhbGx5Q2FjaGVkSW1hZ2VPcHMoYSx0KTtlPW51bGw7Y29udGludWV9fW5leHQobi5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6aSxpbWFnZTplWzBdLGlzSW5saW5lOiEwLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5Ok4sbG9jYWxJbWFnZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Q30pKTtyZXR1cm47Y2FzZSBsZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1lWzBdPW4uaGFuZGxlVGV4dChlWzBdLGQuc3RhdGUpO2JyZWFrO2Nhc2UgQmU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9dmFyIEc9W10seD1kLnN0YXRlO2Zvcihjb25zdCB0IG9mIGVbMF0pInN0cmluZyI9PXR5cGVvZiB0P0cucHVzaCguLi5uLmhhbmRsZVRleHQodCx4KSk6Im51bWJlciI9PXR5cGVvZiB0JiZHLnB1c2godCk7ZVswXT1HO3I9bGU7YnJlYWs7Y2FzZSBRZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1hLmFkZE9wKGhlKTtlWzBdPW4uaGFuZGxlVGV4dChlWzBdLGQuc3RhdGUpO3I9bGU7YnJlYWs7Y2FzZSBFZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1hLmFkZE9wKGhlKTthLmFkZE9wKGFlLFtlLnNoaWZ0KCldKTthLmFkZE9wKGllLFtlLnNoaWZ0KCldKTtlWzBdPW4uaGFuZGxlVGV4dChlWzBdLGQuc3RhdGUpO3I9bGU7YnJlYWs7Y2FzZSBvZTpkLnN0YXRlLnRleHRSZW5kZXJpbmdNb2RlPWVbMF07YnJlYWs7Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sQyk7aWYodCl7ZC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobi5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6Q30pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJihkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSBmZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sQyk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkudGhlbigoZnVuY3Rpb24oZSl7ZSYmKGQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1lKX0pKSk7cmV0dXJufWNhc2Ugd2U6RD1kLnN0YXRlLmZpbGxDb2xvclNwYWNlO2U9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgbWU6RD1kLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9U2U7YnJlYWs7Y2FzZSBGZTpkLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIERlOmQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3I9U2U7YnJlYWs7Y2FzZSBOZTpkLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYihlLDApO3I9U2U7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihlLDApO2JyZWFrO2Nhc2UgU2U6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihlLDApO2JyZWFrO2Nhc2UgYmU6RD1kLnN0YXRlLmZpbGxDb2xvclNwYWNlO2lmKCJQYXR0ZXJuIj09PUQubmFtZSl7bmV4dChuLmhhbmRsZUNvbG9yTihhLGJlLGUsRCx1LGksdCxDLGwsUSkpO3JldHVybn1lPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIHllOkQ9ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlO2lmKCJQYXR0ZXJuIj09PUQubmFtZSl7bmV4dChuLmhhbmRsZUNvbG9yTihhLHllLGUsRCx1LGksdCxDLGwsUSkpO3JldHVybn1lPUQuZ2V0UmdiKGUsMCk7cj1TZTticmVhaztjYXNlIEdlOnZhciBVPWkuZ2V0KCJTaGFkaW5nIik7aWYoIVUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIHJlc291cmNlIGZvdW5kIik7dmFyIE09VS5nZXQoZVswXS5uYW1lKTtpZighTSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgb2JqZWN0IGZvdW5kIik7Y29uc3QgZj1uLnBhcnNlU2hhZGluZyh7c2hhZGluZzpNLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkMsbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOlF9KTtpZighZiljb250aW51ZTtlPVtmXTtyPUdlO2JyZWFrO2Nhc2UgeEE6az1lWzBdaW5zdGFuY2VvZiBOYW1lO1M9ZVswXS5uYW1lO2lmKGspe2NvbnN0IHQ9aC5nZXRCeU5hbWUoUyk7aWYodCl7dC5sZW5ndGg+MCYmYS5hZGRPcCh4QSxbdF0pO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgcz1pLmdldCgiRXh0R1N0YXRlIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KFMpO2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7bi5zZXRHU3RhdGUoe3Jlc291cmNlczppLGdTdGF0ZTpvLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OlMsdGFzazp0LHN0YXRlTWFuYWdlcjpkLGxvY2FsR1N0YXRlQ2FjaGU6aCxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkudGhlbihlLHIpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBIQTpjYXNlIEpBOmNhc2UgWUE6Y2FzZSB2QTpjYXNlIFRBOmNhc2UgS0E6Y2FzZSBxQTpuLmJ1aWxkUGF0aChhLHIsZSxnKTtjb250aW51ZTtjYXNlIEhlOmNhc2UgSmU6Y2FzZSBLZTpjYXNlIHFlOmNvbnRpbnVlO2Nhc2UgdmU6aWYoIShlWzBdaW5zdGFuY2VvZiBOYW1lKSl7d2FybihgRXhwZWN0ZWQgbmFtZSBmb3IgYmVnaW5NYXJrZWRDb250ZW50UHJvcHMgYXJnMD0ke2VbMF19YCk7YS5hZGRPcCh2ZSxbIk9DIixudWxsXSk7Y29udGludWV9aWYoIk9DIj09PWVbMF0ubmFtZSl7bmV4dChuLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGVbMV0saSkudGhlbigoZT0+e2EuYWRkT3AodmUsWyJPQyIsZV0pfSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbi5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJHtlfSIuYCk7YS5hZGRPcCh2ZSxbIk9DIixudWxsXSl9fSkpKTtyZXR1cm59ZT1bZVswXS5uYW1lLGVbMV1pbnN0YW5jZW9mIERpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztkZWZhdWx0OmlmKG51bGwhPT1lKXtmb3Iodz0wLGI9ZS5sZW5ndGg7dzxiJiYhKGVbd11pbnN0YW5jZW9mIERpY3QpO3crKyk7aWYodzxiKXt3YXJuKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIityKTtjb250aW51ZX19fWEuYWRkT3AocixlKX1pZih5KW5leHQoR3IpO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpfX0pKX1nZXRUZXh0Q29udGVudCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLHN0YXRlTWFuYWdlcjpzPW51bGwsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bj0hMSxzaW5rOm8sc2VlblN0eWxlczpnPW5ldyBTZXQsdmlld0JveDpjLGxhbmc6Qz1udWxsLG1hcmtlZENvbnRlbnREYXRhOmg9bnVsbCxkaXNhYmxlTm9ybWFsaXphdGlvbjpsPSExLGtlZXBXaGl0ZVNwYWNlOlE9ITF9KXtpfHw9RGljdC5lbXB0eTtzfHw9bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtuJiYoaHx8PXtsZXZlbDowfSk7Y29uc3QgRT17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCksbGFuZzpDfSx1PXtpbml0aWFsaXplZDohMSxzdHI6W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCx2ZXJ0aWNhbDohMSxwcmV2VHJhbnNmb3JtOm51bGwsdGV4dEFkdmFuY2VTY2FsZTowLHNwYWNlSW5GbG93TWluOjAsc3BhY2VJbkZsb3dNYXg6MCx0cmFja2luZ1NwYWNlTWluOjEvMCxuZWdhdGl2ZVNwYWNlTWF4Oi0xLzAsbm90QVNwYWNlOi0xLzAsdHJhbnNmb3JtOm51bGwsZm9udE5hbWU6bnVsbCxoYXNFT0w6ITF9LGQ9WyIgIiwiICJdO2xldCBmPTA7ZnVuY3Rpb24gc2F2ZUxhc3RDaGFyKGUpe2NvbnN0IHQ9KGYrMSklMixpPSIgIiE9PWRbZl0mJiIgIj09PWRbdF07ZFtmXT1lO2Y9dDtyZXR1cm4hUSYmaX1mdW5jdGlvbiBzaG91bGRBZGRXaGl0ZXBzYWNlKCl7cmV0dXJuIVEmJiIgIiE9PWRbZl0mJiIgIj09PWRbKGYrMSklMl19ZnVuY3Rpb24gcmVzZXRMYXN0Q2hhcnMoKXtkWzBdPWRbMV09IiAiO2Y9MH1jb25zdCBwPXRoaXMsbT10aGlzLnhyZWYseT1bXTtsZXQgdz1udWxsO2NvbnN0IGI9bmV3IExvY2FsSW1hZ2VDYWNoZSxEPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLFM9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG0scyk7bGV0IGs7ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTppPXUucHJldlRyYW5zZm9ybSxmb250TmFtZTphPXUuZm9udE5hbWV9KXtFLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmksZm9udE5hbWU6YSxoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9ay5mb250LHQ9W2suZm9udFNpemUqay50ZXh0SFNjYWxlLDAsMCxrLmZvbnRTaXplLDAsay50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKGsuZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiFpc0FycmF5RXF1YWwoay5mb250TWF0cml4LHIpKXtjb25zdCBpPWUuYmJveFszXS1lLmJib3hbMV07aT4wJiYodFszXSo9aSprLmZvbnRNYXRyaXhbM10pfXJldHVybiBVdGlsLnRyYW5zZm9ybShrLmN0bSxVdGlsLnRyYW5zZm9ybShrLnRleHRNYXRyaXgsdCkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKHUuaW5pdGlhbGl6ZWQpcmV0dXJuIHU7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09aztpZighZy5oYXModCkpe2cuYWRkKHQpO0Uuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfTtpZihwLm9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyYmZS5zeXN0ZW1Gb250SW5mbyl7Y29uc3QgaT1FLnN0eWxlc1t0XTtpLmZvbnRTdWJzdGl0dXRpb249ZS5zeXN0ZW1Gb250SW5mby5jc3M7aS5mb250U3Vic3RpdHV0aW9uTG9hZGVkTmFtZT1lLnN5c3RlbUZvbnRJbmZvLmxvYWRlZE5hbWV9fXUuZm9udE5hbWU9dDtjb25zdCBpPXUudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7dS53aWR0aD11LnRvdGFsV2lkdGg9TWF0aC5oeXBvdChpWzBdLGlbMV0pO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9MDt1LnZlcnRpY2FsPSEwfWVsc2V7dS53aWR0aD11LnRvdGFsV2lkdGg9MDt1LmhlaWdodD11LnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoaVsyXSxpWzNdKTt1LnZlcnRpY2FsPSExfWNvbnN0IGE9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHI9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSk7dS50ZXh0QWR2YW5jZVNjYWxlPXIqYTtjb25zdHtmb250U2l6ZTpzfT1rO3UudHJhY2tpbmdTcGFjZU1pbj0uMTAyKnM7dS5ub3RBU3BhY2U9LjAzKnM7dS5uZWdhdGl2ZVNwYWNlTWF4PS0uMipzO3Uuc3BhY2VJbkZsb3dNaW49LjEwMipzO3Uuc3BhY2VJbkZsb3dNYXg9LjYqczt1Lmhhc0VPTD0hMTt1LmluaXRpYWxpemVkPSEwO3JldHVybiB1fWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCF1LmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3Qoay50ZXh0TGluZU1hdHJpeFswXSxrLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3Qoay5jdG1bMF0say5jdG1bMV0pKmU7aWYodCE9PXUudGV4dEFkdmFuY2VTY2FsZSl7aWYodS52ZXJ0aWNhbCl7dS50b3RhbEhlaWdodCs9dS5oZWlnaHQqdS50ZXh0QWR2YW5jZVNjYWxlO3UuaGVpZ2h0PTB9ZWxzZXt1LnRvdGFsV2lkdGgrPXUud2lkdGgqdS50ZXh0QWR2YW5jZVNjYWxlO3Uud2lkdGg9MH11LnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gcnVuQmlkaVRyYW5zZm9ybShlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTtsfHwodD1mdW5jdGlvbiBub3JtYWxpemVVbmljb2RlKGUpe2lmKCFjdCl7Y3Q9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O0N0PW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKGN0LCgoZSx0LGkpPT50P3Qubm9ybWFsaXplKCJORktDIik6Q3QuZ2V0KGkpKSl9KHQpKTtjb25zdCBpPWJpZGkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmkuc3RyLGRpcjppLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fWFzeW5jIGZ1bmN0aW9uIGhhbmRsZVNldEZvbnQoZSxhKXtjb25zdCBzPWF3YWl0IHAubG9hZEZvbnQoZSxhLGkpO2lmKHMuZm9udC5pc1R5cGUzRm9udCl0cnl7YXdhaXQgcy5sb2FkVHlwZTNEYXRhKHAsaSx0KX1jYXRjaHt9ay5sb2FkZWROYW1lPXMubG9hZGVkTmFtZTtrLmZvbnQ9cy5mb250O2suZm9udE1hdHJpeD1zLmZvbnQuZm9udE1hdHJpeHx8cn1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsaSl7Y29uc3QgYT1NYXRoLmh5cG90KGlbMF0saVsxXSk7cmV0dXJuWyhpWzBdKmUraVsxXSp0KS9hLChpWzJdKmUraVszXSp0KS9hXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbihlKXtjb25zdCB0PWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7bGV0IGk9dFs0XSxhPXRbNV07aWYoay5mb250Py52ZXJ0aWNhbCl7aWYoaTxjWzBdfHxpPmNbMl18fGErZTxjWzFdfHxhPmNbM10pcmV0dXJuITF9ZWxzZSBpZihpK2U8Y1swXXx8aT5jWzJdfHxhPGNbMV18fGE+Y1szXSlyZXR1cm4hMTtpZighay5mb250fHwhdS5wcmV2VHJhbnNmb3JtKXJldHVybiEwO2xldCByPXUucHJldlRyYW5zZm9ybVs0XSxzPXUucHJldlRyYW5zZm9ybVs1XTtpZihyPT09aSYmcz09PWEpcmV0dXJuITA7bGV0IG49LTE7dFswXSYmMD09PXRbMV0mJjA9PT10WzJdP249dFswXT4wPzA6MTgwOnRbMV0mJjA9PT10WzBdJiYwPT09dFszXSYmKG49dFsxXT4wPzkwOjI3MCk7c3dpdGNoKG4pe2Nhc2UgMDpicmVhaztjYXNlIDkwOltpLGFdPVthLGldO1tyLHNdPVtzLHJdO2JyZWFrO2Nhc2UgMTgwOltpLGEscixzXT1bLWksLWEsLXIsLXNdO2JyZWFrO2Nhc2UgMjcwOltpLGFdPVstYSwtaV07W3Isc109Wy1zLC1yXTticmVhaztkZWZhdWx0OltpLGFdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksYSx0KTtbcixzXT1hcHBseUludmVyc2VSb3RhdGlvbihyLHMsdS5wcmV2VHJhbnNmb3JtKX1pZihrLmZvbnQudmVydGljYWwpe2NvbnN0IGU9KHMtYSkvdS50ZXh0QWR2YW5jZVNjYWxlLHQ9aS1yLG49TWF0aC5zaWduKHUuaGVpZ2h0KTtpZihlPG4qdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyh0KT4uNSp1LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnModCk+dS53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9ZTw9bip1Lm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihlPD1uKnUudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGUsdS5wcmV2VHJhbnNmb3JtLG4pKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgdS5oZWlnaHQrPWU7TWF0aC5hYnModCk+LjI1KnUud2lkdGgmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9Y29uc3Qgbz0oaS1yKS91LnRleHRBZHZhbmNlU2NhbGUsZz1hLXMsQz1NYXRoLnNpZ24odS53aWR0aCk7aWYobzxDKnUubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMoZyk+LjUqdS5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhnKT51LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9bzw9Qyp1Lm5vdEFTcGFjZSYmcmVzZXRMYXN0Q2hhcnMoKTtpZihvPD1DKnUudHJhY2tpbmdTcGFjZU1pbilpZihzaG91bGRBZGRXaGl0ZXBzYWNlKCkpe3Jlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHUud2lkdGgrPW87ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhvLHUucHJldlRyYW5zZm9ybSxDKSlpZigwPT09dS5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztNYXRoLmFicyhnKT4uMjUqdS5oZWlnaHQmJmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9ZnVuY3Rpb24gYnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnR9KXtjb25zdCBpPWsuZm9udDtpZighZSl7Y29uc3QgZT1rLmNoYXJTcGFjaW5nK3Q7ZSYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWUpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChlKmsudGV4dEhTY2FsZSwwKSk7USYmY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oMCk7cmV0dXJufWNvbnN0IGE9aS5jaGFyc1RvR2x5cGhzKGUpLHI9ay5mb250TWF0cml4WzBdKmsuZm9udFNpemU7Zm9yKGxldCBlPTAscz1hLmxlbmd0aDtlPHM7ZSsrKXtjb25zdCBuPWFbZV0se2NhdGVnb3J5Om99PW47aWYoby5pc0ludmlzaWJsZUZvcm1hdE1hcmspY29udGludWU7bGV0IGc9ay5jaGFyU3BhY2luZysoZSsxPT09cz90OjApLGM9bi53aWR0aDtpLnZlcnRpY2FsJiYoYz1uLnZtZXRyaWM/bi52bWV0cmljWzBdOi1jKTtsZXQgQz1jKnI7aWYoIVEmJm8uaXNXaGl0ZXNwYWNlKXtpZihpLnZlcnRpY2FsKXtnKz0tQytrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1nKX1lbHNle2crPUMray53b3JkU3BhY2luZztrLnRyYW5zbGF0ZVRleHRNYXRyaXgoZyprLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIW8uaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihDKSl7aS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxDKTprLnRyYW5zbGF0ZVRleHRNYXRyaXgoQyprLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgaD1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYoQz0wKTtpZihpLnZlcnRpY2FsKXtrLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxDKTtDPU1hdGguYWJzKEMpO2guaGVpZ2h0Kz1DfWVsc2V7Qyo9ay50ZXh0SFNjYWxlO2sudHJhbnNsYXRlVGV4dE1hdHJpeChDLDApO2gud2lkdGgrPUN9QyYmKGgucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtjb25zdCBsPW4udW5pY29kZTtzYXZlTGFzdENoYXIobCkmJmguc3RyLnB1c2goIiAiKTtoLnN0ci5wdXNoKGwpO2cmJihpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1nKTprLnRyYW5zbGF0ZVRleHRNYXRyaXgoZyprLnRleHRIU2NhbGUsMCkpfX1mdW5jdGlvbiBhcHBlbmRFT0woKXtyZXNldExhc3RDaGFycygpO2lmKHUuaW5pdGlhbGl6ZWQpe3UuaGFzRU9MPSEwO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCl9ZWxzZSBFLml0ZW1zLnB1c2goe3N0cjoiIixkaXI6Imx0ciIsd2lkdGg6MCxoZWlnaHQ6MCx0cmFuc2Zvcm06Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTprLmxvYWRlZE5hbWUsaGFzRU9MOiEwfSl9ZnVuY3Rpb24gYWRkRmFrZVNwYWNlcyhlLHQsaSl7aWYoaSp1LnNwYWNlSW5GbG93TWluPD1lJiZlPD1pKnUuc3BhY2VJbkZsb3dNYXgpe2lmKHUuaW5pdGlhbGl6ZWQpe3Jlc2V0TGFzdENoYXJzKCk7dS5zdHIucHVzaCgiICIpfXJldHVybiExfWNvbnN0IGE9dS5mb250TmFtZTtsZXQgcj0wO2lmKHUudmVydGljYWwpe3I9ZTtlPTB9Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhlKSxoZWlnaHQ6TWF0aC5hYnMociksdHJhbnNmb3JtOnR8fGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6YX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZCYmdS5zdHIpe3UudmVydGljYWw/dS50b3RhbEhlaWdodCs9dS5oZWlnaHQqdS50ZXh0QWR2YW5jZVNjYWxlOnUudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7RS5pdGVtcy5wdXNoKHJ1bkJpZGlUcmFuc2Zvcm0odSkpO3UuaW5pdGlhbGl6ZWQ9ITE7dS5zdHIubGVuZ3RoPTB9fWZ1bmN0aW9uIGVucXVldWVDaHVuayhlPSExKXtjb25zdCB0PUUuaXRlbXMubGVuZ3RoO2lmKDAhPT10JiYhKGUmJnQ8MTApKXtvLmVucXVldWUoRSx0KTtFLml0ZW1zPVtdO0Uuc3R5bGVzPU9iamVjdC5jcmVhdGUobnVsbCl9fWNvbnN0IFI9bmV3IFRpbWVTbG90TWFuYWdlcjtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtlbnF1ZXVlQ2h1bmsoITApO1Byb21pc2UuYWxsKFt0LG8ucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHIpfWNhdGNoKGUpe3IoZSl9fSkscil9O3QuZW5zdXJlTm90VGVybWluYXRlZCgpO1IucmVzZXQoKTtjb25zdCB1PXt9O2xldCBkLGY9W107Zm9yKDshKGQ9Ui5jaGVjaygpKTspe2YubGVuZ3RoPTA7dS5hcmdzPWY7aWYoIVMucmVhZCh1KSlicmVhaztjb25zdCBlPWs7az1zLnN0YXRlO2NvbnN0IHI9dS5mbjtmPXUuYXJncztzd2l0Y2goMHxyKXtjYXNlIG5lOnZhciBOPWZbMF0ubmFtZSxHPWZbMV07aWYoay5mb250JiZOPT09ay5mb250TmFtZSYmRz09PWsuZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtrLmZvbnROYW1lPU47ay5mb250U2l6ZT1HO25leHQoaGFuZGxlU2V0Rm9udChOLG51bGwpKTtyZXR1cm47Y2FzZSBnZTprLnRleHRSaXNlPWZbMF07YnJlYWs7Y2FzZSByZTprLnRleHRIU2NhbGU9ZlswXS8xMDA7YnJlYWs7Y2FzZSBzZTprLmxlYWRpbmc9ZlswXTticmVhaztjYXNlIEllOmsudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZlswXSxmWzFdKTtrLnRleHRNYXRyaXg9ay50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgY2U6ay5sZWFkaW5nPS1mWzFdO2sudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZlswXSxmWzFdKTtrLnRleHRNYXRyaXg9ay50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgaGU6ay5jYXJyaWFnZVJldHVybigpO2JyZWFrO2Nhc2UgQ2U6ay5zZXRUZXh0TWF0cml4KGZbMF0sZlsxXSxmWzJdLGZbM10sZls0XSxmWzVdKTtrLnNldFRleHRMaW5lTWF0cml4KGZbMF0sZlsxXSxmWzJdLGZbM10sZls0XSxmWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIGllOmsuY2hhclNwYWNpbmc9ZlswXTticmVhaztjYXNlIGFlOmsud29yZFNwYWNpbmc9ZlswXTticmVhaztjYXNlIGVlOmsudGV4dE1hdHJpeD1hLnNsaWNlKCk7ay50ZXh0TGluZU1hdHJpeD1hLnNsaWNlKCk7YnJlYWs7Y2FzZSBCZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1jb25zdCByPShrLmZvbnQudmVydGljYWw/MTotMSkqay5mb250U2l6ZS8xZTMsdT1mWzBdO2ZvcihsZXQgZT0wLHQ9dS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD11W2VdO2lmKCJzdHJpbmciPT10eXBlb2YgdCl5LnB1c2godCk7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIHQmJjAhPT10KXtjb25zdCBlPXkuam9pbigiIik7eS5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dCpyfSl9fWlmKHkubGVuZ3RoPjApe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSBsZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1idWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZlswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgUWU6aWYoIXMuc3RhdGUuZm9udCl7cC5lbnN1cmVTdGF0ZUZvbnQocy5zdGF0ZSk7Y29udGludWV9ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpmWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLndvcmRTcGFjaW5nPWZbMF07ay5jaGFyU3BhY2luZz1mWzFdO2suY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZlsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgTGU6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTt3fHwodz1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5KTt2YXIgeD1mWzBdaW5zdGFuY2VvZiBOYW1lLFU9ZlswXS5uYW1lO2lmKHgmJmIuZ2V0QnlOYW1lKFUpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsYSl7aWYoIXgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgcj13LmdldFJhdyhVKTtpZihyIGluc3RhbmNlb2YgUmVmKXtpZihiLmdldEJ5UmVmKHIpKXtlKCk7cmV0dXJufWlmKHAuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHIscC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufXI9bS5mZXRjaChyKX1pZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgRT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShFIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09RS5uYW1lKXtiLnNldChVLHIuZGljdC5vYmpJZCwhMCk7ZSgpO3JldHVybn1jb25zdCB1PXMuc3RhdGUuY2xvbmUoKSxkPW5ldyBTdGF0ZU1hbmFnZXIodSksZj1sb29rdXBNYXRyaXgoci5kaWN0LmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtmJiZkLnRyYW5zZm9ybShmKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB5PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtvLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIG8uZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBvLnJlYWR5fX07cC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnIsdGFzazp0LHJlc291cmNlczpyLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8aSxzdGF0ZU1hbmFnZXI6ZCxpbmNsdWRlTWFya2VkQ29udGVudDpuLHNpbms6eSxzZWVuU3R5bGVzOmcsdmlld0JveDpjLGxhbmc6QyxtYXJrZWRDb250ZW50RGF0YTpoLGRpc2FibGVOb3JtYWxpemF0aW9uOmwsa2VlcFdoaXRlU3BhY2U6UX0pLnRoZW4oKGZ1bmN0aW9uKCl7eS5lbnF1ZXVlSW52b2tlZHx8Yi5zZXQoVSxyLmRpY3Qub2JqSWQsITApO2UoKX0pLGEpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFwLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSB4QTp4PWZbMF1pbnN0YW5jZW9mIE5hbWU7VT1mWzBdLm5hbWU7aWYoeCYmRC5nZXRCeU5hbWUoVSkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtpZigheCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3QgYT1pLmdldCgiRXh0R1N0YXRlIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCByPWEuZ2V0KFUpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1yLmdldCgiRm9udCIpO2lmKHMpe2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ay5mb250TmFtZT1udWxsO2suZm9udFNpemU9c1sxXTtoYW5kbGVTZXRGb250KG51bGwsc1swXSkudGhlbihlLHQpfWVsc2V7RC5zZXQoVSxyLm9iaklkLCEwKTtlKCl9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFwLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIFllOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO0UuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50Iix0YWc6ZlswXWluc3RhbmNlb2YgTmFtZT9mWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgdmU6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtoLmxldmVsKys7bGV0IGU9bnVsbDtmWzFdaW5zdGFuY2VvZiBEaWN0JiYoZT1mWzFdLmdldCgiTUNJRCIpKTtFLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3AuaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tYyR7ZX1gOm51bGwsdGFnOmZbMF1pbnN0YW5jZW9mIE5hbWU/ZlswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIFRlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aWYoMD09PWgubGV2ZWwpYnJlYWs7aC5sZXZlbC0tO0UuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX1icmVhaztjYXNlIE1BOiFlfHxlLmZvbnQ9PT1rLmZvbnQmJmUuZm9udFNpemU9PT1rLmZvbnRTaXplJiZlLmZvbnROYW1lPT09ay5mb250TmFtZXx8Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1pZihFLml0ZW1zLmxlbmd0aD49by5kZXNpcmVkU2l6ZSl7ZD0hMDticmVha319aWYoZCluZXh0KEdyKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCl9fSkpfWFzeW5jIGV4dHJhY3REYXRhU3RydWN0dXJlcyhlLHQpe2NvbnN0IGk9dGhpcy54cmVmO2xldCBhO2NvbnN0IHI9dGhpcy5yZWFkVG9Vbmljb2RlKHQudG9Vbmljb2RlKTtpZih0LmNvbXBvc2l0ZSl7Y29uc3QgaT1lLmdldCgiQ0lEU3lzdGVtSW5mbyIpO2kgaW5zdGFuY2VvZiBEaWN0JiYodC5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeTpzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiUmVnaXN0cnkiKSksb3JkZXJpbmc6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIk9yZGVyaW5nIikpLHN1cHBsZW1lbnQ6aS5nZXQoIlN1cHBsZW1lbnQiKX0pO3RyeXtjb25zdCB0PWUuZ2V0KCJDSURUb0dJRE1hcCIpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBzPVtdO2xldCBuLG89bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7bj1lLmdldCgiRW5jb2RpbmciKTtpZihuIGluc3RhbmNlb2YgRGljdCl7bz1uLmdldCgiQmFzZUVuY29kaW5nIik7bz1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtpZihuLmhhcygiRGlmZmVyZW5jZXMiKSl7Y29uc3QgZT1uLmdldCgiRGlmZmVyZW5jZXMiKTtsZXQgdD0wO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9aS5mZXRjaElmUmVmKGEpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gJ0RpZmZlcmVuY2VzJyBhcnJheTogJHtlfWApO3NbdCsrXT1lLm5hbWV9fX19ZWxzZSBpZihuIGluc3RhbmNlb2YgTmFtZSlvPW4ubmFtZTtlbHNle2NvbnN0IGU9IkVuY29kaW5nIGlzIG5vdCBhIE5hbWUgbm9yIGEgRGljdCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGUpO3dhcm4oZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09byYmIk1hY0V4cGVydEVuY29kaW5nIiE9PW8mJiJXaW5BbnNpRW5jb2RpbmciIT09byYmKG89bnVsbCl9Y29uc3QgZz0hdC5maWxlfHx0LmlzSW50ZXJuYWxGb250LGM9X2koKVt0Lm5hbWVdO28mJmcmJmMmJihvPW51bGwpO2lmKG8pdC5kZWZhdWx0RW5jb2Rpbmc9Z2V0RW5jb2Rpbmcobyk7ZWxzZXtjb25zdCBlPSEhKHQuZmxhZ3MmT2kpLGk9ISEodC5mbGFncyZQaSk7bj1taTsiVHJ1ZVR5cGUiIT09dC50eXBlfHxpfHwobj15aSk7aWYoZXx8Yyl7bj1waTtnJiYoL1N5bWJvbC9pLnRlc3QodC5uYW1lKT9uPXdpOi9EaW5nYmF0cy9pLnRlc3QodC5uYW1lKT9uPWJpOi9XaW5nZGluZ3MvaS50ZXN0KHQubmFtZSkmJihuPXlpKSl9dC5kZWZhdWx0RW5jb2Rpbmc9bn10LmRpZmZlcmVuY2VzPXM7dC5iYXNlRW5jb2RpbmdOYW1lPW87dC5oYXNFbmNvZGluZz0hIW98fHMubGVuZ3RoPjA7dC5kaWN0PWU7dC50b1VuaWNvZGU9YXdhaXQgcjtjb25zdCBDPWF3YWl0IHRoaXMuYnVpbGRUb1VuaWNvZGUodCk7dC50b1VuaWNvZGU9QzthJiYodC5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChhLEMpKTtyZXR1cm4gdH1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpe2Fzc2VydCghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBpPVtdLGE9ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxyPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihhW2VdPXQpfWNvbnN0IG49eGkoKTtmb3IoY29uc3QgcyBpbiBhKXtsZXQgbz1hW3NdO2lmKCIiPT09byljb250aW51ZTtsZXQgZz1uW29dO2lmKHZvaWQgMCE9PWcpe2lbc109U3RyaW5nLmZyb21DaGFyQ29kZShnKTtjb250aW51ZX1sZXQgYz0wO3N3aXRjaChvWzBdKXtjYXNlIkciOjM9PT1vLmxlbmd0aCYmKGM9cGFyc2VJbnQoby5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlImciOjU9PT1vLmxlbmd0aCYmKGM9cGFyc2VJbnQoby5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlIkMiOmNhc2UiYyI6aWYoby5sZW5ndGg+PTMmJm8ubGVuZ3RoPD00KXtjb25zdCBpPW8uc3Vic3RyaW5nKDEpO2lmKHQpe2M9cGFyc2VJbnQoaSwxNik7YnJlYWt9Yz0raTtpZihOdW1iZXIuaXNOYU4oYykmJk51bWJlci5pc0ludGVnZXIocGFyc2VJbnQoaSwxNikpKXJldHVybiB0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUsITApfWJyZWFrO2Nhc2UidSI6Zz1nZXRVbmljb2RlRm9yR2x5cGgobyxuKTstMSE9PWcmJihjPWcpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKG8pe2Nhc2UiZl9oIjpjYXNlImZfdCI6Y2FzZSJUX2giOmlbc109by5yZXBsYWNlQWxsKCJfIiwiIik7Y29udGludWV9fWlmKGM+MCYmYzw9MTExNDExMSYmTnVtYmVyLmlzSW50ZWdlcihjKSl7aWYociYmYz09PStzKXtjb25zdCBlPWdldEVuY29kaW5nKHIpO2lmKGUmJihvPWVbc10pKXtpW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUobltvXSk7Y29udGludWV9fWlbc109U3RyaW5nLmZyb21Db2RlUG9pbnQoYyl9fXJldHVybiBpfWFzeW5jIGJ1aWxkVG9Vbmljb2RlKGUpe2UuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXA9ZS50b1VuaWNvZGU/Lmxlbmd0aD4wO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApeyFlLmNvbXBvc2l0ZSYmZS5oYXNFbmNvZGluZyYmKGUuZmFsbGJhY2tUb1VuaWNvZGU9dGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7cmV0dXJuIGUudG9Vbmljb2RlfWlmKCFlLmNvbXBvc2l0ZSlyZXR1cm4gbmV3IFRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApfHwiQWRvYmUiPT09ZS5jaWRTeXN0ZW1JbmZvPy5yZWdpc3RyeSYmKCJHQjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiQ05TMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJKYXBhbjEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiS29yZWExIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZykpKXtjb25zdHtyZWdpc3RyeTp0LG9yZGVyaW5nOml9PWUuY2lkU3lzdGVtSW5mbyxhPU5hbWUuZ2V0KGAke3R9LSR7aX0tVUNTMmApLHI9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzphLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLHM9W10sbj1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IGk9ci5sb29rdXAodCk7aWYoaSl7bi5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0yKW4ucHVzaCgoaS5jaGFyQ29kZUF0KGUpPDw4KStpLmNoYXJDb2RlQXQoZSsxKSk7c1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKC4uLm4pfX0pKTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChzKX1yZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfWFzeW5jIHJlYWRUb1VuaWNvZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3JldHVybiB0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwP25ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTpuZXcgVG9Vbmljb2RlTWFwKHQuZ2V0TWFwKCkpfWlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXRyeXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtpZih0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgaT1uZXcgQXJyYXkodC5sZW5ndGgpO3QuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpe2lbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQodCk7cmV0dXJufWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmkpKXthLnB1c2goaSk7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmcikrNjU1MzYpfWlbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthKytdPDw4fGVbYV0scz1hPj4xOygwIT09cnx8dC5oYXMocykpJiYoaVtzXT1yKX1yZXR1cm4gaX1leHRyYWN0V2lkdGhzKGUsdCxpKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj1bXSxzPTA7Y29uc3Qgbj1bXTtsZXQgbztpZihpLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtzPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihyW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCBzPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygcyljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylyW2VdPXN9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpzLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHI9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpYnJlYWs7e2NvbnN0IHM9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXI7ZSsrKW5bZV09c319fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihyW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtzPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9S2k6aS5mbGFncyY9fktpO2kuZGVmYXVsdFdpZHRoPXM7aS53aWR0aHM9cjtpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIFZpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCByPWppKClbZV18fGU7Y29uc3Qgcz10YSgpO3IgaW4gc3x8KHI9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXNbcl07aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoaVt0XT1lW3JbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnIsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnMsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTphLHR5cGU6cyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBDPSJUeXBlMyI9PT1zO2lmKCFlKXtpZighQyl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHIpP3FpOjApfChhLm1vbm9zcGFjZT9LaTowKXwoX2koKVtyXT9PaTpQaSksaD17dHlwZTpzLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6Q30sbD10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxzKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKEFycmF5LmlzQXJyYXkobCkpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBsKXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaElmUmVmKGkpOyJudW1iZXIiPT10eXBlb2YgYSYmKGVbdF09YSk7dCsrfXUud2lkdGhzPWV9ZWxzZSB1LndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGEud2lkdGhzLHUpO3JldHVybiBuZXcgRm9udChlLEUsdSl9e2NvbnN0IGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJGb250QkJveCIpLFswLDAsMCwwXSk7KGU9bmV3IERpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLE5hbWUuZ2V0KHMpKTtlLnNldCgiRm9udEJCb3giLGkpfX1sZXQgaD1lLmdldCgiRm9udE5hbWUiKSxsPXQuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9TmFtZS5nZXQoaCkpOyJzdHJpbmciPT10eXBlb2YgbCYmKGw9TmFtZS5nZXQobCkpO2NvbnN0IFE9aD8ubmFtZSxFPWw/Lm5hbWU7aWYoIUMmJlEhPT1FKXtpbmZvKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtRfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke0V9Ii5gKTtRJiZFJiYoRS5zdGFydHNXaXRoKFEpfHwhaXNLbm93bkZvbnROYW1lKFEpJiZpc0tub3duRm9udE5hbWUoRSkpJiYoaD1udWxsKX1ofHw9bDtpZighKGggaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IHUsZCxmLHAsbTt0cnl7dT1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHtoLm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt1PW5ldyBOdWxsU3RyZWFtfWxldCB5PSExLHc9bnVsbCxiPW51bGw7aWYodSl7aWYodS5kaWN0KXtjb25zdCBlPXUuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKGQ9ZS5uYW1lKTtmPXUuZGljdC5nZXQoIkxlbmd0aDEiKTtwPXUuZGljdC5nZXQoIkxlbmd0aDIiKTttPXUuZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihjKXtjb25zdCBlPWdldFhmYUZvbnROYW1lKGgubmFtZSk7aWYoZSl7Yy5mb250RmFtaWx5PWAke2MuZm9udEZhbWlseX0tUGRmSlMtWEZBYDtjLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO3c9ZS5mYWN0b3JzfHxudWxsO3U9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTt5PSEhdTtpPXQ9Z2V0WGZhRm9udERpY3QoaC5uYW1lKTthPSEwfX1lbHNlIGlmKCFDKXtjb25zdCBlPWdldFN0YW5kYXJkRm9udE5hbWUoaC5uYW1lKTtpZihlKXt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO3k9ISF1fSF5JiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJihiPWdldEZvbnRTdWJzdGl0dXRpb24odGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsaC5uYW1lLGUscykpfWNvbnN0IEQ9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIkZvbnRNYXRyaXgiKSxyKSxTPWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiRm9udEJCb3giKXx8dC5nZXRBcnJheSgiRm9udEJCb3giKSx2b2lkIDApO2xldCBrPWUuZ2V0KCJBc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIGsmJihrPXZvaWQgMCk7bGV0IFI9ZS5nZXQoIkRlc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIFImJihSPXZvaWQgMCk7bGV0IE49ZS5nZXQoIlhIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIE4mJihOPTApO2xldCBHPWUuZ2V0KCJDYXBIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIEcmJihHPTApO2xldCB4PWUuZ2V0KCJGbGFncyIpO051bWJlci5pc0ludGVnZXIoeCl8fCh4PTApO2xldCBVPWUuZ2V0KCJJdGFsaWNBbmdsZSIpOyJudW1iZXIiIT10eXBlb2YgVSYmKFU9MCk7Y29uc3QgTT17dHlwZTpzLG5hbWU6aC5uYW1lLHN1YnR5cGU6ZCxmaWxlOnUsbGVuZ3RoMTpmLGxlbmd0aDI6cCxsZW5ndGgzOm0saXNJbnRlcm5hbEZvbnQ6eSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxjb21wb3NpdGU6YSxmaXhlZFBpdGNoOiExLGZvbnRNYXRyaXg6RCxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGJib3g6Uyxhc2NlbnQ6ayxkZXNjZW50OlIseEhlaWdodDpOLGNhcEhlaWdodDpHLGZsYWdzOngsaXRhbGljQW5nbGU6VSxpc1R5cGUzRm9udDpDLGNzc0ZvbnRJbmZvOmMsc2NhbGVGYWN0b3JzOncsc3lzdGVtRm9udEluZm86Yn07aWYoYSl7Y29uc3QgZT1pLmdldCgiRW5jb2RpbmciKTtlIGluc3RhbmNlb2YgTmFtZSYmKE0uY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtNLmNNYXA9dDtNLnZlcnRpY2FsPU0uY01hcC52ZXJ0aWNhbH1jb25zdCBMPWF3YWl0IHRoaXMuZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKHQsTSk7dGhpcy5leHRyYWN0V2lkdGhzKHQsZSxMKTtyZXR1cm4gbmV3IEZvbnQoaC5uYW1lLHUsTCl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxpLGEpe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCByPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2kuc2VuZCgiY29tbW9ub2JqIixbciwiRm9udFBhdGgiLGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpXSl9Y2F0Y2goZSl7aWYoYS5pZ25vcmVFcnJvcnMpe3dhcm4oYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtyfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0Py5mb250Q2hhciYmYnVpbGRQYXRoKHQuZm9udENoYXIpfX1zdGF0aWMgZ2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgVHJhbnNsYXRlZEZvbnR7Y29uc3RydWN0b3Ioe2xvYWRlZE5hbWU6ZSxmb250OnQsZGljdDppLGV2YWx1YXRvck9wdGlvbnM6YX0pe3RoaXMubG9hZGVkTmFtZT1lO3RoaXMuZm9udD10O3RoaXMuZGljdD1pO3RoaXMuX2V2YWx1YXRvck9wdGlvbnM9YXx8a3I7dGhpcy50eXBlM0xvYWRlZD1udWxsO3RoaXMudHlwZTNEZXBlbmRlbmNpZXM9dC5pc1R5cGUzRm9udD9uZXcgU2V0Om51bGw7dGhpcy5zZW50PSExfXNlbmQoZSl7aWYoIXRoaXMuc2VudCl7dGhpcy5zZW50PSEwO2Uuc2VuZCgiY29tbW9ub2JqIixbdGhpcy5sb2FkZWROYW1lLCJGb250Iix0aGlzLmZvbnQuZXhwb3J0RGF0YSh0aGlzLl9ldmFsdWF0b3JPcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMpXSl9fWZhbGxiYWNrKGUpe2lmKHRoaXMuZm9udC5kYXRhKXt0aGlzLmZvbnQuZGlzYWJsZUZvbnRGYWNlPSEwO1BhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHModGhpcy5mb250LHRoaXMuZm9udC5nbHlwaENhY2hlVmFsdWVzLGUsdGhpcy5fZXZhbHVhdG9yT3B0aW9ucyl9fWxvYWRUeXBlM0RhdGEoZSx0LGkpe2lmKHRoaXMudHlwZTNMb2FkZWQpcmV0dXJuIHRoaXMudHlwZTNMb2FkZWQ7aWYoIXRoaXMuZm9udC5pc1R5cGUzRm9udCl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYSBUeXBlMyBmb250LiIpO2NvbnN0IGE9ZS5jbG9uZSh7aWdub3JlRXJyb3JzOiExfSkscj1uZXcgUmVmU2V0KGUudHlwZTNGb250UmVmcyk7dGhpcy5kaWN0Lm9iaklkJiYhci5oYXModGhpcy5kaWN0Lm9iaklkKSYmci5wdXQodGhpcy5kaWN0Lm9iaklkKTthLnR5cGUzRm9udFJlZnM9cjtjb25zdCBzPXRoaXMuZm9udCxuPXRoaXMudHlwZTNEZXBlbmRlbmNpZXM7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgZz10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxjPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LEM9T2JqZWN0LmNyZWF0ZShudWxsKSxoPVV0aWwubm9ybWFsaXplUmVjdChzLmJib3h8fFswLDAsMCwwXSksbD1oWzJdLWhbMF0sUT1oWzNdLWhbMV0sRT1NYXRoLmh5cG90KGwsUSk7Zm9yKGNvbnN0IGUgb2YgZy5nZXRLZXlzKCkpbz1vLnRoZW4oKCgpPT57Y29uc3QgdD1nLmdldChlKSxyPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIGEuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmkscmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0OnJ9KS50aGVuKCgoKT0+e3IuZm5BcnJheVswXT09PWRlJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKHIsRSk7Q1tlXT1yLmdldElSKCk7Zm9yKGNvbnN0IGUgb2Ygci5kZXBlbmRlbmNpZXMpbi5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3dhcm4oYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgaT1uZXcgT3BlcmF0b3JMaXN0O0NbZV09aS5nZXRJUigpfSkpfSkpO3RoaXMudHlwZTNMb2FkZWQ9by50aGVuKCgoKT0+e3MuY2hhclByb2NPcGVyYXRvckxpc3Q9QztpZih0aGlzLl9iYm94KXtzLmlzQ2hhckJCb3g9ITA7cy5iYm94PXRoaXMuX2Jib3h9fSkpO3JldHVybiB0aGlzLnR5cGUzTG9hZGVkfV9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGUsdD1OYU4pe2NvbnN0IGk9VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxhPWlbMl0taVswXSxyPWlbM10taVsxXSxzPU1hdGguaHlwb3QoYSxyKTtpZigwPT09YXx8MD09PXIpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT10fHxNYXRoLnJvdW5kKHMvdCk+PTEwKXt0aGlzLl9iYm94fHwodGhpcy5fYmJveD1bMS8wLDEvMCwtMS8wLC0xLzBdKTt0aGlzLl9iYm94WzBdPU1hdGgubWluKHRoaXMuX2Jib3hbMF0saVswXSk7dGhpcy5fYmJveFsxXT1NYXRoLm1pbih0aGlzLl9iYm94WzFdLGlbMV0pO3RoaXMuX2Jib3hbMl09TWF0aC5tYXgodGhpcy5fYmJveFsyXSxpWzJdKTt0aGlzLl9iYm94WzNdPU1hdGgubWF4KHRoaXMuX2Jib3hbM10saVszXSl9bGV0IG49MCxvPWUubGVuZ3RoO2Zvcig7bjxvOyl7c3dpdGNoKGUuZm5BcnJheVtuXSl7Y2FzZSBkZTpicmVhaztjYXNlIGZlOmNhc2UgcGU6Y2FzZSBtZTpjYXNlIHllOmNhc2Ugd2U6Y2FzZSBiZTpjYXNlIERlOmNhc2UgRmU6Y2FzZSBTZTpjYXNlIGtlOmNhc2UgUmU6Y2FzZSBOZTpjYXNlIEdlOmNhc2UgTkE6ZS5mbkFycmF5LnNwbGljZShuLDEpO2UuYXJnc0FycmF5LnNwbGljZShuLDEpO28tLTtjb250aW51ZTtjYXNlIHhBOmNvbnN0W3RdPWUuYXJnc0FycmF5W25dO2xldCBpPTAsYT10Lmxlbmd0aDtmb3IoO2k8YTspe2NvbnN0W2VdPXRbaV07c3dpdGNoKGUpe2Nhc2UiVFIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6dC5zcGxpY2UoaSwxKTthLS07Y29udGludWV9aSsrfX1uKyt9fX1jbGFzcyBTdGF0ZU1hbmFnZXJ7Y29uc3RydWN0b3IoZT1uZXcgRXZhbFN0YXRlKXt0aGlzLnN0YXRlPWU7dGhpcy5zdGF0ZVN0YWNrPVtdfXNhdmUoKXtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZVN0YWNrLnB1c2godGhpcy5zdGF0ZSk7dGhpcy5zdGF0ZT1lLmNsb25lKCl9cmVzdG9yZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfXRyYW5zZm9ybShlKXt0aGlzLnN0YXRlLmN0bT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnROYW1lPW51bGw7dGhpcy5mb250U2l6ZT0wO3RoaXMubG9hZGVkTmFtZT1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9udE1hdHJpeD1yO3RoaXMudGV4dE1hdHJpeD1hLnNsaWNlKCk7dGhpcy50ZXh0TGluZU1hdHJpeD1hLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsaSxhLHIscyl7Y29uc3Qgbj10aGlzLnRleHRNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TGluZU1hdHJpeDtuWzBdPWU7blsxXT10O25bMl09aTtuWzNdPWE7bls0XT1yO25bNV09c310cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRNYXRyaXg7aVs0XT1pWzBdKmUraVsyXSp0K2lbNF07aVs1XT1pWzFdKmUraVszXSp0K2lbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBpPXRoaXMudGV4dExpbmVNYXRyaXg7aVs0XT1pWzBdKmUraVsyXSp0K2lbNF07aVs1XT1pWzFdKmUraVszXSp0K2lbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KGEpO3RoaXMuZm9udD1udWxsO3RoaXMudGV4dFJlbmRlcmluZ01vZGU9dzt0aGlzLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O3RoaXMuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6REEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6UkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOk5BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDp4QSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDpVQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpNQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6TEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SEEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6dkEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6S0EsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOnFBLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOk9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDplZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6dGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDphZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6cmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOnNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpuZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6b2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOmdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpJZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6Y2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOkNlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOmhlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6QmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpRZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOkVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDp1ZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZGUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOmZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDpwZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6bWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp5ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOndlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6YmUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDpTZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6a2UsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6UmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOkdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDp4ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6VWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOk1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpMZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOkplLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDp2ZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpLZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6cWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1IQSYmczw9ekE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09eXQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgVUE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTUE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG5lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBrZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgRmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBOZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgVUE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBNQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBDZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBuZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBwZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIHdlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBrZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgRmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBOZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGxlOmNhc2UgQmU6Y2FzZSBRZTpjYXNlIEVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxDPWctcjt0JTE4MCE9MCYmKFtjLENdPVtDLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLEMrbippLWhdLGJib3g6WzAsMCxjLENdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LEMsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBDPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtDPU1hdGgubWF4KEMsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fUMqPWEvMWUzO2NvbnN0W2gsbCxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1sO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7Qz51JiYoZj11L0MpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmNvbnN0cnVjdG9yPT09TmFtZU9yTnVtYmVyVHJlZSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIE5hbWVPck51bWJlclRyZWUuIik7dGhpcy5yb290PWU7dGhpcy54cmVmPXQ7dGhpcy5fdHlwZT1pfWdldEFsbCgpe2NvbnN0IGU9bmV3IE1hcDtpZighdGhpcy5yb290KXJldHVybiBlO2NvbnN0IHQ9dGhpcy54cmVmLGk9bmV3IFJlZlNldDtpLnB1dCh0aGlzLnJvb3QpO2NvbnN0IGE9W3RoaXMucm9vdF07Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3Qgcj10LmZldGNoSWZSZWYoYS5zaGlmdCgpKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihyLmhhcygiS2lkcyIpKXtjb25zdCBlPXIuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoaS5oYXModCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBEdXBsaWNhdGUgZW50cnkgaW4gIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7YS5wdXNoKHQpO2kucHV0KHQpfWNvbnRpbnVlfWNvbnN0IHM9ci5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShzKSlmb3IobGV0IGk9MCxhPXMubGVuZ3RoO2k8YTtpKz0yKWUuc2V0KHQuZmV0Y2hJZlJlZihzW2ldKSx0LmZldGNoSWZSZWYoc1tpKzFdKSl9cmV0dXJuIGV9Z2V0KGUpe2lmKCF0aGlzLnJvb3QpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnhyZWY7bGV0IGk9dC5mZXRjaElmUmVmKHRoaXMucm9vdCksYT0wO2Zvcig7aS5oYXMoIktpZHMiKTspe2lmKCsrYT4xMCl7d2FybihgU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO3JldHVybiBudWxsfWNvbnN0IHI9aS5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gbnVsbDtsZXQgcz0wLG49ci5sZW5ndGgtMTtmb3IoO3M8PW47KXtjb25zdCBhPXMrbj4+MSxvPXQuZmV0Y2hJZlJlZihyW2FdKSxnPW8uZ2V0KCJMaW1pdHMiKTtpZihlPHQuZmV0Y2hJZlJlZihnWzBdKSluPWEtMTtlbHNle2lmKCEoZT50LmZldGNoSWZSZWYoZ1sxXSkpKXtpPW87YnJlYWt9cz1hKzF9fWlmKHM+bilyZXR1cm4gbnVsbH1jb25zdCByPWkuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkocikpe2xldCBpPTAsYT1yLmxlbmd0aC0yO2Zvcig7aTw9YTspe2NvbnN0IHM9aSthPj4xLG49cysoMSZzKSxvPXQuZmV0Y2hJZlJlZihyW25dKTtpZihlPG8pYT1uLTI7ZWxzZXtpZighKGU+bykpcmV0dXJuIHQuZmV0Y2hJZlJlZihyW24rMV0pO2k9bisyfX19cmV0dXJuIG51bGx9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7YmE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXt3dD1PYmplY3QuY3JlYXRlKG51bGwpO2J0PU9iamVjdC5jcmVhdGUobnVsbCk7RHQ9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7dmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNTPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1M9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1MpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IHhyPTAsVXI9LTIsTXI9LTMsTHI9LTQsSHI9LTUsSnI9LTYsWXI9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoWXIpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKE1yKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEhyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFVyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKEpyKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKExyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihMcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoSnIpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihZcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT14cjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPXhyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09eHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5kZWNyeXB0PWk7dGhpcy5uZXh0Q2h1bms9bnVsbDt0aGlzLmluaXRpYWxpemVkPSExfXJlYWRCbG9jaygpe2xldCBlO2lmKHRoaXMuaW5pdGlhbGl6ZWQpZT10aGlzLm5leHRDaHVuaztlbHNle2U9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTt0aGlzLmluaXRpYWxpemVkPSEwfWlmKCFlfHwwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLm5leHRDaHVuaz10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO2NvbnN0IHQ9dGhpcy5uZXh0Q2h1bms/Lmxlbmd0aD4wO2U9KDAsdGhpcy5kZWNyeXB0KShlLCF0KTtjb25zdCBpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9aStlLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihhKS5zZXQoZSxpKTt0aGlzLmJ1ZmZlckxlbmd0aD1hfX1jbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCBhPTAscj0wO2E8MjU2OysrYSl7Y29uc3Qgcz10W2FdO3I9citzK2VbYSVpXSYyNTU7dFthXT10W3JdO3Rbcl09c310aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGk9dGhpcy5iO2NvbnN0IGE9dGhpcy5zLHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyKTtmb3IobGV0IG49MDtuPHI7KytuKXt0PXQrMSYyNTU7Y29uc3Qgcj1hW3RdO2k9aStyJjI1NTtjb25zdCBvPWFbaV07YVt0XT1vO2FbaV09cjtzW25dPWVbbl1eYVtyK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9aTtyZXR1cm4gc31kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX1jb25zdCB2cj1mdW5jdGlvbiBjYWxjdWxhdGVNRDVDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxXSksdD1uZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKTtyZXR1cm4gZnVuY3Rpb24gaGFzaChpLGEscil7bGV0IHM9MTczMjU4NDE5MyxuPS0yNzE3MzM4Nzksbz0tMTczMjU4NDE5NCxnPTI3MTczMzg3ODtjb25zdCBjPXIrNzImLTY0LEM9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsbDtmb3IoaD0wO2g8cjsrK2gpQ1toXT1pW2ErK107Q1toKytdPTEyODtjb25zdCBRPWMtODtmb3IoO2g8UTspQ1toKytdPTA7Q1toKytdPXI8PDMmMjU1O0NbaCsrXT1yPj41JjI1NTtDW2grK109cj4+MTMmMjU1O0NbaCsrXT1yPj4yMSYyNTU7Q1toKytdPXI+Pj4yOSYyNTU7Q1toKytdPTA7Q1toKytdPTA7Q1toKytdPTA7Y29uc3QgRT1uZXcgSW50MzJBcnJheSgxNik7Zm9yKGg9MDtoPGM7KXtmb3IobD0wO2w8MTY7KytsLGgrPTQpRVtsXT1DW2hdfENbaCsxXTw8OHxDW2grMl08PDE2fENbaCszXTw8MjQ7bGV0IGksYSxyPXMsYz1uLFE9byx1PWc7Zm9yKGw9MDtsPDY0OysrbCl7aWYobDwxNil7aT1jJlF8fmMmdTthPWx9ZWxzZSBpZihsPDMyKXtpPXUmY3x+dSZRO2E9NSpsKzEmMTV9ZWxzZSBpZihsPDQ4KXtpPWNeUV51O2E9MypsKzUmMTV9ZWxzZXtpPVFeKGN8fnUpO2E9NypsJjE1fWNvbnN0IHM9dSxuPXIraSt0W2xdK0VbYV18MCxvPWVbbF07dT1RO1E9YztjPWMrKG48PG98bj4+PjMyLW8pfDA7cj1zfXM9cytyfDA7bj1uK2N8MDtvPW8rUXwwO2c9Zyt1fDB9cmV0dXJuIG5ldyBVaW50OEFycmF5KFsyNTUmcyxzPj44JjI1NSxzPj4xNiYyNTUscz4+PjI0JjI1NSwyNTUmbixuPj44JjI1NSxuPj4xNiYyNTUsbj4+PjI0JjI1NSwyNTUmbyxvPj44JjI1NSxvPj4xNiYyNTUsbz4+PjI0JjI1NSwyNTUmZyxnPj44JjI1NSxnPj4xNiYyNTUsZz4+PjI0JjI1NV0pfX0oKTtjbGFzcyBXb3JkNjR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmhpZ2g9MHxlO3RoaXMubG93PTB8dH1hbmQoZSl7dGhpcy5oaWdoJj1lLmhpZ2g7dGhpcy5sb3cmPWUubG93fXhvcihlKXt0aGlzLmhpZ2hePWUuaGlnaDt0aGlzLmxvd149ZS5sb3d9b3IoZSl7dGhpcy5oaWdofD1lLmhpZ2g7dGhpcy5sb3d8PWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19c2hpZnRMZWZ0KGUpe2lmKGU+PTMyKXt0aGlzLmhpZ2g9dGhpcy5sb3c8PGUtMzI7dGhpcy5sb3c9MH1lbHNle3RoaXMuaGlnaD10aGlzLmhpZ2g8PGV8dGhpcy5sb3c+Pj4zMi1lO3RoaXMubG93PDw9ZX19cm90YXRlUmlnaHQoZSl7bGV0IHQsaTtpZigzMiZlKXtpPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdztpPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxpPDwzMi1lO3RoaXMuaGlnaD1pPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgaT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGkrPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxpfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBUcj1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxpKXtyZXR1cm4gZSZ0Xn5lJml9ZnVuY3Rpb24gbWFqKGUsdCxpKXtyZXR1cm4gZSZ0XmUmaV50Jml9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGksYSl7bGV0IHI9MTc3OTAzMzcwMyxzPTMxNDQxMzQyNzcsbj0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixnPTEzNTk4OTMxMTksYz0yNjAwODIyOTI0LEM9NTI4NzM0NjM1LGg9MTU0MTQ1OTIyNTtjb25zdCBsPTY0Kk1hdGguY2VpbCgoYSs5KS82NCksUT1uZXcgVWludDhBcnJheShsKTtsZXQgRSx1O2ZvcihFPTA7RTxhOysrRSlRW0VdPXRbaSsrXTtRW0UrK109MTI4O2NvbnN0IGQ9bC04O2Zvcig7RTxkOylRW0UrK109MDtRW0UrK109MDtRW0UrK109MDtRW0UrK109MDtRW0UrK109YT4+PjI5JjI1NTtRW0UrK109YT4+MjEmMjU1O1FbRSsrXT1hPj4xMyYyNTU7UVtFKytdPWE+PjUmMjU1O1FbRSsrXT1hPDwzJjI1NTtjb25zdCBmPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKEU9MDtFPGw7KXtmb3IodT0wO3U8MTY7Kyt1KXtmW3VdPVFbRV08PDI0fFFbRSsxXTw8MTZ8UVtFKzJdPDw4fFFbRSszXTtFKz00fWZvcih1PTE2O3U8NjQ7Kyt1KWZbdV09KHJvdHIocD1mW3UtMl0sMTcpXnJvdHIocCwxOSlecD4+PjEwKStmW3UtN10rbGl0dGxlU2lnbWEoZlt1LTE1XSkrZlt1LTE2XXwwO2xldCB0LGksYT1yLGw9cyxkPW4sbT1vLHk9Zyx3PWMsYj1DLEQ9aDtmb3IodT0wO3U8NjQ7Kyt1KXt0PUQrc2lnbWFQcmltZSh5KStjaCh5LHcsYikrZVt1XStmW3VdO2k9c2lnbWEoYSkrbWFqKGEsbCxkKTtEPWI7Yj13O3c9eTt5PW0rdHwwO209ZDtkPWw7bD1hO2E9dCtpfDB9cj1yK2F8MDtzPXMrbHwwO249bitkfDA7bz1vK218MDtnPWcreXwwO2M9Yyt3fDA7Qz1DK2J8MDtoPWgrRHwwfXZhciBwO3JldHVybiBuZXcgVWludDhBcnJheShbcj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLG4+PjI0JjI1NSxuPj4xNiYyNTUsbj4+OCYyNTUsMjU1Jm4sbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxnPj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLGM+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMsQz4+MjQmMjU1LEM+PjE2JjI1NSxDPj44JjI1NSwyNTUmQyxoPj4yNCYyNTUsaD4+MTYmMjU1LGg+PjgmMjU1LDI1NSZoXSl9fSgpLEtyPWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMkNsb3N1cmUoKXtmdW5jdGlvbiBjaChlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3Iubm90KCk7ci5hbmQoYSk7ZS54b3Iocil9ZnVuY3Rpb24gbWFqKGUsdCxpLGEscil7ZS5hc3NpZ24odCk7ZS5hbmQoaSk7ci5hc3NpZ24odCk7ci5hbmQoYSk7ZS54b3Iocik7ci5hc3NpZ24oaSk7ci5hbmQoYSk7ZS54b3Iocil9ZnVuY3Rpb24gc2lnbWEoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMjgpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMzQpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMzkpO2UueG9yKGkpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTQpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMTgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoNDEpO2UueG9yKGkpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDEpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoOCk7ZS54b3IoaSk7aS5hc3NpZ24odCk7aS5zaGlmdFJpZ2h0KDcpO2UueG9yKGkpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hUHJpbWUoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoNjEpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg2KTtlLnhvcihpKX1jb25zdCBlPVtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEscj0hMSl7bGV0IHMsbixvLGcsYyxDLGgsbDtpZihyKXtzPW5ldyBXb3JkNjQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKTtuPW5ldyBXb3JkNjQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpO289bmV3IFdvcmQ2NCgyNDM4NTI5MzcwLDgxMjcwMjk5OSk7Zz1uZXcgV29yZDY0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KTtjPW5ldyBXb3JkNjQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KTtDPW5ldyBXb3JkNjQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KTtoPW5ldyBXb3JkNjQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KTtsPW5ldyBXb3JkNjQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KX1lbHNle3M9bmV3IFdvcmQ2NCgxNzc5MDMzNzAzLDQwODkyMzU3MjApO249bmV3IFdvcmQ2NCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpO289bmV3IFdvcmQ2NCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpO2c9bmV3IFdvcmQ2NCgyNzczNDgwNzYyLDE1OTU3NTAxMjkpO2M9bmV3IFdvcmQ2NCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpO0M9bmV3IFdvcmQ2NCgyNjAwODIyOTI0LDcyNTUxMTE5OSk7aD1uZXcgV29yZDY0KDUyODczNDYzNSw0MjE1Mzg5NTQ3KTtsPW5ldyBXb3JkNjQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpfWNvbnN0IFE9MTI4Kk1hdGguY2VpbCgoYSsxNykvMTI4KSxFPW5ldyBVaW50OEFycmF5KFEpO2xldCB1LGQ7Zm9yKHU9MDt1PGE7Kyt1KUVbdV09dFtpKytdO0VbdSsrXT0xMjg7Y29uc3QgZj1RLTE2O2Zvcig7dTxmOylFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109YT4+PjI5JjI1NTtFW3UrK109YT4+MjEmMjU1O0VbdSsrXT1hPj4xMyYyNTU7RVt1KytdPWE+PjUmMjU1O0VbdSsrXT1hPDwzJjI1NTtjb25zdCBwPW5ldyBBcnJheSg4MCk7Zm9yKHU9MDt1PDgwO3UrKylwW3VdPW5ldyBXb3JkNjQoMCwwKTtsZXQgbT1uZXcgV29yZDY0KDAsMCkseT1uZXcgV29yZDY0KDAsMCksdz1uZXcgV29yZDY0KDAsMCksYj1uZXcgV29yZDY0KDAsMCksRD1uZXcgV29yZDY0KDAsMCksUz1uZXcgV29yZDY0KDAsMCksaz1uZXcgV29yZDY0KDAsMCksUj1uZXcgV29yZDY0KDAsMCk7Y29uc3QgTj1uZXcgV29yZDY0KDAsMCksRz1uZXcgV29yZDY0KDAsMCkseD1uZXcgV29yZDY0KDAsMCksVT1uZXcgV29yZDY0KDAsMCk7bGV0IE0sTDtmb3IodT0wO3U8UTspe2ZvcihkPTA7ZDwxNjsrK2Qpe3BbZF0uaGlnaD1FW3VdPDwyNHxFW3UrMV08PDE2fEVbdSsyXTw8OHxFW3UrM107cFtkXS5sb3c9RVt1KzRdPDwyNHxFW3UrNV08PDE2fEVbdSs2XTw8OHxFW3UrN107dSs9OH1mb3IoZD0xNjtkPDgwOysrZCl7TT1wW2RdO2xpdHRsZVNpZ21hUHJpbWUoTSxwW2QtMl0sVSk7TS5hZGQocFtkLTddKTtsaXR0bGVTaWdtYSh4LHBbZC0xNV0sVSk7TS5hZGQoeCk7TS5hZGQocFtkLTE2XSl9bS5hc3NpZ24ocyk7eS5hc3NpZ24obik7dy5hc3NpZ24obyk7Yi5hc3NpZ24oZyk7RC5hc3NpZ24oYyk7Uy5hc3NpZ24oQyk7ay5hc3NpZ24oaCk7Ui5hc3NpZ24obCk7Zm9yKGQ9MDtkPDgwOysrZCl7Ti5hc3NpZ24oUik7c2lnbWFQcmltZSh4LEQsVSk7Ti5hZGQoeCk7Y2goeCxELFMsayxVKTtOLmFkZCh4KTtOLmFkZChlW2RdKTtOLmFkZChwW2RdKTtzaWdtYShHLG0sVSk7bWFqKHgsbSx5LHcsVSk7Ry5hZGQoeCk7TT1SO1I9aztrPVM7Uz1EO2IuYWRkKE4pO0Q9YjtiPXc7dz15O3k9bTtNLmFzc2lnbihOKTtNLmFkZChHKTttPU19cy5hZGQobSk7bi5hZGQoeSk7by5hZGQodyk7Zy5hZGQoYik7Yy5hZGQoRCk7Qy5hZGQoUyk7aC5hZGQoayk7bC5hZGQoUil9aWYocil7TD1uZXcgVWludDhBcnJheSg0OCk7cy5jb3B5VG8oTCwwKTtuLmNvcHlUbyhMLDgpO28uY29weVRvKEwsMTYpO2cuY29weVRvKEwsMjQpO2MuY29weVRvKEwsMzIpO0MuY29weVRvKEwsNDApfWVsc2V7TD1uZXcgVWludDhBcnJheSg2NCk7cy5jb3B5VG8oTCwwKTtuLmNvcHlUbyhMLDgpO28uY29weVRvKEwsMTYpO2cuY29weVRvKEwsMjQpO2MuY29weVRvKEwsMzIpO0MuY29weVRvKEwsNDApO2guY29weVRvKEwsNDgpO2wuY29weVRvKEwsNTYpfXJldHVybiBMfX0oKTtjbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGksYSxyO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpc1tlXV49dFtpXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2k9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPXRoaXMuX2ludl9zW3NbZV1dO2ZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2Epc1tpXV49dFthXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3NbZV1dLGE9dGhpcy5fbWl4W3NbZSsxXV0scj10aGlzLl9taXhbc1tlKzJdXSxuPXRoaXMuX21peFtzW2UrM11dO2k9dF5hPj4+OF5hPDwyNF5yPj4+MTZecjw8MTZebj4+PjI0Xm48PDg7c1tlXT1pPj4+MjQmMjU1O3NbZSsxXT1pPj4xNiYyNTU7c1tlKzJdPWk+PjgmMjU1O3NbZSszXT0yNTUmaX19aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtzW2VdPXRoaXMuX2ludl9zW3NbZV1dO3NbZV1ePXRbZV19cmV0dXJuIHN9X2VuY3J5cHQoZSx0KXtjb25zdCBpPXRoaXMuX3M7bGV0IGEscixzO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1uW2UrMF0saT1uW2UrMV0scj1uW2UrMl0scz1uW2UrM107YT10Xmlecl5zO25bZSswXV49YV50aGlzLl9taXhDb2xbdF5pXTtuW2UrMV1ePWFedGhpcy5fbWl4Q29sW2lecl07bltlKzJdXj1hXnRoaXMuX21peENvbFtyXnNdO25bZSszXV49YV50aGlzLl9taXhDb2xbc150XX1mb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKW5baV1ePXRbYV19Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKW5bZV1ePXRbaV07cmV0dXJuIG59X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO2xldCBuPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtyXT1lW3RdOysrcjtpZihyPDE2KWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5fZGVjcnlwdChhLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49bltlXTtuPWE7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj1uO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqcy5sZW5ndGg7aWYodCl7Y29uc3QgZT1zLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBpPTE1LGE9MTYtdDtpPj1hOy0taSlpZihlW2ldIT09dCl7dD0wO2JyZWFrfW8tPXQ7c1tzLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilnLnNldChzW2VdLHQpO3JldHVybiBnfWRlY3J5cHRCbG9jayhlLHQsaT1udWxsKXtjb25zdCBhPWUubGVuZ3RoLHI9dGhpcy5idWZmZXI7bGV0IHM9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihpKXRoaXMuaXY9aTtlbHNle2ZvcihsZXQgdD0wO3M8MTYmJnQ8YTsrK3QsKytzKXJbc109ZVt0XTtpZihzPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1zO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PXI7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBuPTA7bjxpOysrbil7YVtyXT1lW25dOysrcjtpZihyPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXRbZV07Y29uc3QgaT10aGlzLl9lbmNyeXB0KGEsdGhpcy5fa2V5KTt0PWk7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj10O2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgbj0xNipzLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpby5zZXQoc1tlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPXRoaXMuX3Jjb24sYT1uZXcgVWludDhBcnJheSgxNzYpO2Euc2V0KGUpO2ZvcihsZXQgZT0xNixyPTE7ZTwxNzY7KytyKXtsZXQgcz1hW2UtM10sbj1hW2UtMl0sbz1hW2UtMV0sZz1hW2UtNF07cz10W3NdO249dFtuXTtvPXRbb107Zz10W2ddO3NePWlbcl07Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1zXj1hW2UtMTZdO2UrKzthW2VdPW5ePWFbZS0xNl07ZSsrO2FbZV09b149YVtlLTE2XTtlKys7YVtlXT1nXj1hW2UtMTZdO2UrK319cmV0dXJuIGF9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPW5ldyBVaW50OEFycmF5KDI0MCk7aS5zZXQoZSk7bGV0IGEscixzLG4sbz0xO2ZvcihsZXQgZT0zMixnPTE7ZTwyNDA7KytnKXtpZihlJTMyPT0xNil7YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dfWVsc2UgaWYoZSUzMj09MCl7YT1pW2UtM107cj1pW2UtMl07cz1pW2UtMV07bj1pW2UtNF07YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dO2FePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXtpW2VdPWFePWlbZS0zMl07ZSsrO2lbZV09cl49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPW5ePWlbZS0zMl07ZSsrfX1yZXR1cm4gaX19Y2xhc3MgUERGMTd7Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbChUcihyLDAsci5sZW5ndGgpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbChUcihhLDAsYS5sZW5ndGgpLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1UcihyLDAsci5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9VHIoYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYyMHtfaGFzaChlLHQsaSl7bGV0IGE9VHIodCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtpLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KHQpO2xldCBDPTA7Yy5zZXQoZSxDKTtDKz1lLmxlbmd0aDtjLnNldChhLEMpO0MrPWEubGVuZ3RoO2Muc2V0KGksQyk7Y29uc3QgaD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxpPTA7ZTw2NDtlKyssaSs9dCloLnNldChjLGkpO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGgsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IGw9ci5zbGljZSgwLDE2KS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApJTM7MD09PWw/YT1UcihyLDAsci5sZW5ndGgpOjE9PT1sP2E9KG49cixvPTAsZz1yLmxlbmd0aCxLcihuLG8sZywhMCkpOjI9PT1sJiYoYT1LcihyLDAsci5sZW5ndGgpKTtzKyt9dmFyIG4sbyxnO3JldHVybiBhLnN1YmFycmF5KDAsMzIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHIsaSksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxhLFtdKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dGhpcy5faGFzaChlLHIsaSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUsYSxbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBpPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gaS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZGVjcnlwdEJsb2NrKGksITApO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgaT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpLnJlcGVhdChpKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgcj1zdHJpbmdUb0J5dGVzKGUpO3I9dC5lbmNyeXB0KHIsYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNityLmxlbmd0aCk7cy5zZXQoYSk7cy5zZXQociwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocyl9bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMjaz1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pOyNSKGUsdCxpLGEscixzLG4sbyxnLGMsQyxoKXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IGw9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gbC5jaGVja1VzZXJQYXNzd29yZCh0LG8sbik/bC5nZXRVc2VyS2V5KHQsZyxDKTp0Lmxlbmd0aCYmbC5jaGVja093bmVyUGFzc3dvcmQodCxhLHMsaSk/bC5nZXRPd25lcktleSh0LHIscyxjKTpudWxsfSNOKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz00MCtpLmxlbmd0aCtlLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGcpO2xldCBDLGgsbD0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7bDxoOysrbCljW2xdPXRbbF19Qz0wO2Zvcig7bDwzMjspY1tsKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI2tbQysrXTtmb3IoQz0wLGg9aS5sZW5ndGg7QzxoOysrQyljW2wrK109aVtDXTtjW2wrK109MjU1JnI7Y1tsKytdPXI+PjgmMjU1O2NbbCsrXT1yPj4xNiYyNTU7Y1tsKytdPXI+Pj4yNCYyNTU7Zm9yKEM9MCxoPWUubGVuZ3RoO0M8aDsrK0MpY1tsKytdPWVbQ107aWYocz49NCYmIW8pe2NbbCsrXT0yNTU7Y1tsKytdPTI1NTtjW2wrK109MjU1O2NbbCsrXT0yNTV9bGV0IFE9dnIoYywwLGwpO2NvbnN0IEU9bj4+MztpZihzPj0zKWZvcihDPTA7Qzw1MDsrK0MpUT12cihRLDAsRSk7Y29uc3QgdT1RLnN1YmFycmF5KDAsRSk7bGV0IGQsZjtpZihzPj0zKXtmb3IobD0wO2w8MzI7KytsKWNbbF09Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4ja1tsXTtmb3IoQz0wLGg9ZS5sZW5ndGg7QzxoOysrQyljW2wrK109ZVtDXTtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2sodnIoYywwLGwpKTtoPXUubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaCk7Zm9yKEM9MTtDPD0xOTsrK0Mpe2ZvcihsZXQgZT0wO2U8aDsrK2UpdFtlXT11W2VdXkM7ZD1uZXcgQVJDRm91ckNpcGhlcih0KTtmPWQuZW5jcnlwdEJsb2NrKGYpfWZvcihDPTAsaD1mLmxlbmd0aDtDPGg7KytDKWlmKGFbQ10hPT1mW0NdKXJldHVybiBudWxsfWVsc2V7ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuI2spO2ZvcihDPTAsaD1mLmxlbmd0aDtDPGg7KytDKWlmKGFbQ10hPT1mW0NdKXJldHVybiBudWxsfXJldHVybiB1fSNHKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBzPTA7Y29uc3Qgbj1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtzPG47KytzKXJbc109ZVtzXTtsZXQgbz0wO2Zvcig7czwzMjspcltzKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI2tbbysrXTtsZXQgZz12cihyLDAscyk7Y29uc3QgYz1hPj4zO2lmKGk+PTMpZm9yKG89MDtvPDUwOysrbylnPXZyKGcsMCxnLmxlbmd0aCk7bGV0IEMsaDtpZihpPj0zKXtoPXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShjKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxjOysrdCllW3RdPWdbdF1ebztDPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO2g9Qy5lbmNyeXB0QmxvY2soaCl9fWVsc2V7Qz1uZXcgQVJDRm91ckNpcGhlcihnLnN1YmFycmF5KDAsYykpO2g9Qy5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIGh9I3goZSx0LGksYT0hMSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShpLmxlbmd0aCs5KSxzPWkubGVuZ3RoO2xldCBuO2ZvcihuPTA7bjxzOysrbilyW25dPWlbbl07cltuKytdPTI1NSZlO3JbbisrXT1lPj44JjI1NTtyW24rK109ZT4+MTYmMjU1O3JbbisrXT0yNTUmdDtyW24rK109dD4+OCYyNTU7aWYoYSl7cltuKytdPTExNTtyW24rK109NjU7cltuKytdPTEwODtyW24rK109ODR9cmV0dXJuIHZyKHIsMCxuKS5zdWJhcnJheSgwLE1hdGgubWluKGkubGVuZ3RoKzUsMTYpKX0jVShlLHQsaSxhLHIpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBzPXRoaXMsbj1lLmdldCh0Lm5hbWUpLG89bj8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIocy4jeChpLGEsciwhMSkpfTtpZigiQUVTVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMTI4Q2lwaGVyKHMuI3goaSxhLHIsITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsaSl7Y29uc3QgYT1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShhLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1hLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3Qgcj1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwxIT09ciYmMiE9PXImJjQhPT1yJiY1IT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09cjtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIXMpaWYocjw9MylzPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxpPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmkgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGkubmFtZSk7cz1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7czw0MCYmKHM8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIocyl8fHM8NDB8fHMlOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IG49c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksZz1uLnN1YmFycmF5KDAsMzIpLGM9by5zdWJhcnJheSgwLDMyKSxDPWUuZ2V0KCJQIiksaD1lLmdldCgiUiIpLGw9KDQ9PT1yfHw1PT09cikmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPWw7Y29uc3QgUT1zdHJpbmdUb0J5dGVzKHQpO2xldCBFLHU7aWYoaSl7aWYoNj09PWgpdHJ5e2k9dXRmOFN0cmluZ1RvU3RyaW5nKGkpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1FPXN0cmluZ1RvQnl0ZXMoaSl9aWYoNSE9PXIpdT10aGlzLiNOKFEsRSxnLGMsQyxoLHMsbCk7ZWxzZXtjb25zdCB0PW4uc3ViYXJyYXkoMzIsNDApLGk9bi5zdWJhcnJheSg0MCw0OCksYT1vLnN1YmFycmF5KDAsNDgpLHI9by5zdWJhcnJheSgzMiw0MCkscz1vLnN1YmFycmF5KDQwLDQ4KSxDPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLGw9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksUT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTt1PXRoaXMuI1IoaCxFLGcsdCxpLGEsYyxyLHMsQyxsLFEpfWlmKCF1JiYhaSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixydCk7aWYoIXUmJmkpe2NvbnN0IGU9dGhpcy4jRyhFLGcsaCxzKTt1PXRoaXMuI04oUSxlLGcsYyxDLGgscyxsKX1pZighdSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsc3QpO3RoaXMuZW5jcnlwdGlvbktleT11O2lmKHI+PTQpe2NvbnN0IHQ9ZS5nZXQoIkNGIik7dCBpbnN0YW5jZW9mIERpY3QmJih0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj10O3RoaXMuc3RtZj1lLmdldCgiU3RtRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLnN0cmY9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5lZmY9ZS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHRoaXMuI1UodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jVSh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgaT10aGlzLiN4KGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLGNpcGhlckNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGkpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShjaXBoZXJDb25zdHJ1Y3RvcixjaXBoZXJDb25zdHJ1Y3Rvcil9fWFzeW5jIGZ1bmN0aW9uIHdyaXRlT2JqZWN0KGUsdCxpLHtlbmNyeXB0OmE9bnVsbH0pe2NvbnN0IHI9YT8uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUubnVtLGUuZ2VuKTtpLnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IG9ialxuYCk7dCBpbnN0YW5jZW9mIERpY3Q/YXdhaXQgd3JpdGVEaWN0KHQsaSxyKTp0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hd2FpdCB3cml0ZVN0cmVhbSh0LGkscik6KEFycmF5LmlzQXJyYXkodCl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSkmJmF3YWl0IHdyaXRlQXJyYXkodCxpLHIpO2kucHVzaCgiXG5lbmRvYmpcbiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlRGljdChlLHQsaSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHtlc2NhcGVQREZOYW1lKGEpfSBgKTthd2FpdCB3cml0ZVZhbHVlKGUuZ2V0UmF3KGEpLHQsaSl9dC5wdXNoKCI+PiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxpKXtsZXQgYT1lLmdldEJ5dGVzKCk7Y29uc3R7ZGljdDpyfT1lLFtzLG5dPWF3YWl0IFByb21pc2UuYWxsKFtyLmdldEFzeW5jKCJGaWx0ZXIiKSxyLmdldEFzeW5jKCJEZWNvZGVQYXJtcyIpXSksbz1pc05hbWUoQXJyYXkuaXNBcnJheShzKT9hd2FpdCByLnhyZWYuZmV0Y2hJZlJlZkFzeW5jKHNbMF0pOnMsIkZsYXRlRGVjb2RlIik7aWYoYS5sZW5ndGg+PTI1Nnx8byl0cnl7Y29uc3QgZT1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSx0PWUud3JpdGFibGUuZ2V0V3JpdGVyKCk7dC53cml0ZShhKTt0LmNsb3NlKCk7Y29uc3QgaT1hd2FpdCBuZXcgUmVzcG9uc2UoZS5yZWFkYWJsZSkuYXJyYXlCdWZmZXIoKTthPW5ldyBVaW50OEFycmF5KGkpO2xldCBnLGM7aWYocyl7aWYoIW8pe2c9QXJyYXkuaXNBcnJheShzKT9bTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksLi4uc106W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLHNdO24mJihjPUFycmF5LmlzQXJyYXkobik/W251bGwsLi4ubl06W251bGwsbl0pfX1lbHNlIGc9TmFtZS5nZXQoIkZsYXRlRGVjb2RlIik7ZyYmci5zZXQoIkZpbHRlciIsZyk7YyYmci5zZXQoIkRlY29kZVBhcm1zIixjKX1jYXRjaChlKXtpbmZvKGB3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJHtlfSIuYCl9bGV0IGc9Ynl0ZXNUb1N0cmluZyhhKTtpJiYoZz1pLmVuY3J5cHRTdHJpbmcoZykpO3Iuc2V0KCJMZW5ndGgiLGcubGVuZ3RoKTthd2FpdCB3cml0ZURpY3Qocix0LGkpO3QucHVzaCgiIHN0cmVhbVxuIixnLCJcbmVuZHN0cmVhbSIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGkpe3QucHVzaCgiWyIpO2xldCBhPSEwO2Zvcihjb25zdCByIG9mIGUpe2E/YT0hMTp0LnB1c2goIiAiKTthd2FpdCB3cml0ZVZhbHVlKHIsdCxpKX10LnB1c2goIl0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVZhbHVlKGUsdCxpKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0LnB1c2goYC8ke2VzY2FwZVBERk5hbWUoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWYpdC5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBSYCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpfHxBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpYXdhaXQgd3JpdGVBcnJheShlLHQsaSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpe2kmJihlPWkuZW5jcnlwdFN0cmluZyhlKSk7dC5wdXNoKGAoJHtlc2NhcGVTdHJpbmcoZSl9KWApfWVsc2UibnVtYmVyIj09dHlwZW9mIGU/dC5wdXNoKG51bWJlclRvU3RyaW5nKGUpKToiYm9vbGVhbiI9PXR5cGVvZiBlP3QucHVzaChlLnRvU3RyaW5nKCkpOmUgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdChlLHQsaSk6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0oZSx0LGkpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOndhcm4oYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsaSxhKXtmb3IobGV0IHI9dCtpLTE7cj5pLTE7ci0tKXthW3JdPTI1NSZlO2U+Pj04fXJldHVybiBpK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGkpe2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKylpW3QrYV09MjU1JmUuY2hhckNvZGVBdChhKX1mdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LG5ld1JlZnM6aSx4cmVmOmF9KXtpZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGk9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTtmb3IoY29uc3R7eGZhOmV9b2YgdCl7aWYoIWUpY29udGludWU7Y29uc3R7cGF0aDp0LHZhbHVlOmF9PWU7aWYoIXQpY29udGludWU7Y29uc3Qgcj1wYXJzZVhGQVBhdGgodCk7bGV0IHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShyLDApOyFzJiZyLmxlbmd0aD4xJiYocz1pLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKFtyLmF0KC0xKV0sMCkpO3M/cy5jaGlsZE5vZGVzPUFycmF5LmlzQXJyYXkoYSk/YS5tYXAoKGU9Pm5ldyBTaW1wbGVET01Ob2RlKCJ2YWx1ZSIsZSkpKTpbbmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixhKV06d2FybihgTm9kZSBub3QgZm91bmQgZm9yIHBhdGg6ICR7dH1gKX1jb25zdCBhPVtdO2kuZG9jdW1lbnRFbGVtZW50LmR1bXAoYSk7cmV0dXJuIGEuam9pbigiIil9KGEuZmV0Y2hJZlJlZih0KS5nZXRTdHJpbmcoKSxpKX1jb25zdCByPWEuZW5jcnlwdDtpZihyKXtlPXIuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHQubnVtLHQuZ2VuKS5lbmNyeXB0U3RyaW5nKGUpfWNvbnN0IHM9YCR7dC5udW19ICR7dC5nZW59IG9ialxuPDwgL1R5cGUgL0VtYmVkZGVkRmlsZSAvTGVuZ3RoICR7ZS5sZW5ndGh9Pj5cbnN0cmVhbVxuYCtlKyJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iO2kucHVzaCh7cmVmOnQsZGF0YTpzfSl9ZnVuY3Rpb24gZ2V0SW5kZXhlcyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdHtyZWY6aX1vZiBlKWkubnVtPT09dC5hdCgtMikrdC5hdCgtMSk/dFt0Lmxlbmd0aC0xXSs9MTp0LnB1c2goaS5udW0sMSk7cmV0dXJuIHR9ZnVuY3Rpb24gY29tcHV0ZUlEcyhlLHQsaSl7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGE9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGk9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksYT10LmZpbGVuYW1lfHwiIixyPVtpLnRvU3RyaW5nKCksYSxlLnRvU3RyaW5nKCldO2xldCBzPXIucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtyLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbj1uZXcgVWludDhBcnJheShzKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIHIpe3dyaXRlU3RyaW5nKGUsbyxuKTtvKz1lLmxlbmd0aH1yZXR1cm4gYnl0ZXNUb1N0cmluZyh2cihuKSl9KGUsdCk7aS5zZXQoIklEIixbdC5maWxlSWRzWzBdLGFdKX19YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTplLHhyZWZJbmZvOnQsbmV3UmVmczppLHhyZWY6YT1udWxsLGhhc1hmYTpyPSExLHhmYURhdGFzZXRzUmVmOnM9bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5Om49ITEsbmVlZEFwcGVhcmFuY2VzOm8sYWNyb0Zvcm1SZWY6Zz1udWxsLGFjcm9Gb3JtOmM9bnVsbCx4ZmFEYXRhOkM9bnVsbCx1c2VYcmVmU3RyZWFtOmg9ITF9KXthd2FpdCBhc3luYyBmdW5jdGlvbiB1cGRhdGVBY3JvZm9ybSh7eHJlZjplLGFjcm9Gb3JtOnQsYWNyb0Zvcm1SZWY6aSxoYXNYZmE6YSxoYXNYZmFEYXRhc2V0c0VudHJ5OnIseGZhRGF0YXNldHNSZWY6cyxuZWVkQXBwZWFyYW5jZXM6bixuZXdSZWZzOm99KXshYXx8cnx8c3x8d2FybigiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtpZighbiYmKCFhfHwhc3x8cikpcmV0dXJuO2NvbnN0IGc9dC5jbG9uZSgpO2lmKGEmJiFyKXtjb25zdCBlPXQuZ2V0KCJYRkEiKS5zbGljZSgpO2Uuc3BsaWNlKDIsMCwiZGF0YXNldHMiKTtlLnNwbGljZSgzLDAscyk7Zy5zZXQoIlhGQSIsZSl9biYmZy5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO2NvbnN0IGM9W107YXdhaXQgd3JpdGVPYmplY3QoaSxnLGMsZSk7by5wdXNoKHtyZWY6aSxkYXRhOmMuam9pbigiIil9KX0oe3hyZWY6YSxhY3JvRm9ybTpjLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOnIsaGFzWGZhRGF0YXNldHNFbnRyeTpuLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm8sbmV3UmVmczppfSk7ciYmdXBkYXRlWEZBKHt4ZmFEYXRhOkMseGZhRGF0YXNldHNSZWY6cyxuZXdSZWZzOmkseHJlZjphfSk7Y29uc3QgbD1bXTtsZXQgUT1lLmxlbmd0aDtjb25zdCBFPWUuYXQoLTEpO2lmKDEwIT09RSYmMTMhPT1FKXtsLnB1c2goIlxuIik7USs9MX1jb25zdCB1PWZ1bmN0aW9uIGdldFRyYWlsZXJEaWN0KGUsdCxpKXtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJQcmV2IixlLnN0YXJ0WFJlZik7Y29uc3Qgcj1lLm5ld1JlZjtpZihpKXt0LnB1c2goe3JlZjpyLGRhdGE6IiJ9KTthLnNldCgiU2l6ZSIsci5udW0rMSk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYUmVmIikpfWVsc2UgYS5zZXQoIlNpemUiLHIubnVtKTtudWxsIT09ZS5yb290UmVmJiZhLnNldCgiUm9vdCIsZS5yb290UmVmKTtudWxsIT09ZS5pbmZvUmVmJiZhLnNldCgiSW5mbyIsZS5pbmZvUmVmKTtudWxsIT09ZS5lbmNyeXB0UmVmJiZhLnNldCgiRW5jcnlwdCIsZS5lbmNyeXB0UmVmKTtyZXR1cm4gYX0odCxpLGgpO2k9aS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpO2Zvcihjb25zdHtkYXRhOmV9b2YgaSludWxsIT09ZSYmbC5wdXNoKGUpO2F3YWl0KGg/YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlN0cmVhbVRhYmxlKGUsdCxpLGEscil7Y29uc3Qgcz1bXTtsZXQgbj0wLG89MDtmb3IoY29uc3R7cmVmOmUsZGF0YTphfW9mIGkpe2xldCBpO249TWF0aC5tYXgobix0KTtpZihudWxsIT09YSl7aT1NYXRoLm1pbihlLmdlbiw2NTUzNSk7cy5wdXNoKFsxLHQsaV0pO3QrPWEubGVuZ3RofWVsc2V7aT1NYXRoLm1pbihlLmdlbisxLDY1NTM1KTtzLnB1c2goWzAsMCxpXSl9bz1NYXRoLm1heChvLGkpfWEuc2V0KCJJbmRleCIsZ2V0SW5kZXhlcyhpKSk7Y29uc3QgZz1bMSxnZXRTaXplSW5CeXRlcyhuKSxnZXRTaXplSW5CeXRlcyhvKV07YS5zZXQoIlciLGcpO2NvbXB1dGVJRHModCxlLGEpO2NvbnN0IGM9Zy5yZWR1Y2UoKChlLHQpPT5lK3QpLDApLEM9bmV3IFVpbnQ4QXJyYXkoYypzLmxlbmd0aCksaD1uZXcgU3RyZWFtKEMpO2guZGljdD1hO2xldCBsPTA7Zm9yKGNvbnN0W2UsdCxpXW9mIHMpe2w9d3JpdGVJbnQoZSxnWzBdLGwsQyk7bD13cml0ZUludCh0LGdbMV0sbCxDKTtsPXdyaXRlSW50KGksZ1syXSxsLEMpfWF3YWl0IHdyaXRlT2JqZWN0KGUubmV3UmVmLGgscix7fSk7ci5wdXNoKCJzdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxRLGksdSxsKTphc3luYyBmdW5jdGlvbiBnZXRYUmVmVGFibGUoZSx0LGksYSxyKXtyLnB1c2goInhyZWZcbiIpO2NvbnN0IHM9Z2V0SW5kZXhlcyhpKTtsZXQgbj0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7aWYoZS5udW09PT1zW25dKXtyLnB1c2goYCR7c1tuXX0gJHtzW24rMV19XG5gKTtuKz0yfWlmKG51bGwhPT1hKXtyLnB1c2goYCR7dC50b1N0cmluZygpLnBhZFN0YXJ0KDEwLCIwIil9ICR7TWF0aC5taW4oZS5nZW4sNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBuXHJcbmApO3QrPWEubGVuZ3RofWVsc2Ugci5wdXNoKGAwMDAwMDAwMDAwICR7TWF0aC5taW4oZS5nZW4rMSw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IGZcclxuYCl9Y29tcHV0ZUlEcyh0LGUsYSk7ci5wdXNoKCJ0cmFpbGVyXG4iKTthd2FpdCB3cml0ZURpY3QoYSxyKTtyLnB1c2goIlxuc3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsUSxpLHUsbCkpO2NvbnN0IGQ9bC5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSxlLmxlbmd0aCksZj1uZXcgVWludDhBcnJheShkKTtmLnNldChlKTtsZXQgcD1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBsKXt3cml0ZVN0cmluZyhlLHAsZik7cCs9ZS5sZW5ndGh9cmV0dXJuIGZ9Y29uc3QgcXI9MSxPcj0yLFByPTMsV3I9NCxqcj01O2NsYXNzIFN0cnVjdFRyZWVSb290e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kaWN0PWU7dGhpcy5yZWY9dCBpbnN0YW5jZW9mIFJlZj90Om51bGw7dGhpcy5yb2xlTWFwPW5ldyBNYXA7dGhpcy5zdHJ1Y3RQYXJlbnRJZHM9bnVsbH1pbml0KCl7dGhpcy5yZWFkUm9sZU1hcCgpfSNNKGUsdCxpKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpfHx0PDApcmV0dXJuO3RoaXMuc3RydWN0UGFyZW50SWRzfHw9bmV3IFJlZlNldENhY2hlO2xldCBhPXRoaXMuc3RydWN0UGFyZW50SWRzLmdldChlKTtpZighYSl7YT1bXTt0aGlzLnN0cnVjdFBhcmVudElkcy5wdXQoZSxhKX1hLnB1c2goW3QsaV0pfWFkZEFubm90YXRpb25JZFRvUGFnZShlLHQpe3RoaXMuI00oZSx0LFdyKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiBEaWN0JiZlLmZvckVhY2goKChlLHQpPT57dCBpbnN0YW5jZW9mIE5hbWUmJnRoaXMucm9sZU1hcC5zZXQoZSx0Lm5hbWUpfSkpfXN0YXRpYyBhc3luYyBjYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmUscGRmTWFuYWdlcjp0LG5ld0Fubm90YXRpb25zQnlQYWdlOml9KXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKCJDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IG5vIGNhdGFsb2cgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPTAscj0hMDtmb3IoY29uc3RbZSxzXW9mIGkpe2NvbnN0e3JlZjppfT1hd2FpdCB0LmdldFBhZ2UoZSk7aWYoIShpIGluc3RhbmNlb2YgUmVmKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7ZX0gaGFzIG5vIHJlZi5gKTtyPSEwO2JyZWFrfWZvcihjb25zdCBlIG9mIHMpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5wYXJlbnRUcmVlSWQ9YSsrO3I9ITF9fWlmKHIpe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSlkZWxldGUgdC5wYXJlbnRUcmVlSWQ7cmV0dXJuITF9cmV0dXJuITB9c3RhdGljIGFzeW5jIGNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUseHJlZjp0LGNhdGFsb2dSZWY6aSxwZGZNYW5hZ2VyOmEsbmV3UmVmczpyfSl7Y29uc3Qgcz1hLmNhdGFsb2cuY2xvbmVEaWN0KCksbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQoaSxzKTtjb25zdCBvPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7cy5zZXQoIlN0cnVjdFRyZWVSb290IixvKTtjb25zdCBnPW5ldyBEaWN0KHQpO2cuc2V0KCJUeXBlIixOYW1lLmdldCgiU3RydWN0VHJlZVJvb3QiKSk7Y29uc3QgYz10LmdldE5ld1RlbXBvcmFyeVJlZigpO2cuc2V0KCJQYXJlbnRUcmVlIixjKTtjb25zdCBDPVtdO2cuc2V0KCJLIixDKTtuLnB1dChvLGcpO2NvbnN0IGg9bmV3IERpY3QodCksbD1bXTtoLnNldCgiTnVtcyIsbCk7Y29uc3QgUT1hd2FpdCB0aGlzLiNMKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm8sa2lkczpDLG51bXM6bCx4cmVmOnQscGRmTWFuYWdlcjphLGNhY2hlOm59KTtnLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLFEpO24ucHV0KGMsaCk7Y29uc3QgRT1bXTtmb3IoY29uc3RbZSxpXW9mIG4uaXRlbXMoKSl7RS5sZW5ndGg9MDthd2FpdCB3cml0ZU9iamVjdChlLGksRSx0KTtyLnB1c2goe3JlZjplLGRhdGE6RS5qb2luKCIiKX0pfX1hc3luYyBjYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmUseHJlZjp0LG5ld0Fubm90YXRpb25zQnlQYWdlOml9KXtpZighdGhpcy5yZWYpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBubyByb290IHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlTmV4dEtleSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBpbnZhbGlkIG5leHQga2V5LiIpO3JldHVybiExfWNvbnN0IHI9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogUGFyZW50VHJlZSBpc24ndCBhIGRpY3QuIik7cmV0dXJuITF9Y29uc3Qgcz1yLmdldCgiTnVtcyIpO2lmKCFBcnJheS5pc0FycmF5KHMpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbnVtcyBpc24ndCBhbiBhcnJheS4iKTtyZXR1cm4hMX1jb25zdCBuPW5ldyBOdW1iZXJUcmVlKHIsdCk7Zm9yKGNvbnN0IHQgb2YgaS5rZXlzKCkpe2NvbnN0e3BhZ2VEaWN0Oml9PWF3YWl0IGUuZ2V0UGFnZSh0KTtpZighaS5oYXMoIlN0cnVjdFBhcmVudHMiKSljb250aW51ZTtjb25zdCBhPWkuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fCFBcnJheS5pc0FycmF5KG4uZ2V0KGEpKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7dH0gaGFzIGEgd3JvbmcgaWQuYCk7cmV0dXJuITF9fWxldCBvPSEwO2Zvcihjb25zdFt0LHJdb2YgaSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO1N0cnVjdFRyZWVSb290LiNIKHtlbGVtZW50czpyLHhyZWY6dGhpcy5kaWN0LnhyZWYscGFnZURpY3Q6aSxudW1iZXJUcmVlOm59KTtmb3IoY29uc3QgZSBvZiByKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztvPSExfX1pZihvKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpe2RlbGV0ZSB0LnBhcmVudFRyZWVJZDtkZWxldGUgdC5zdHJ1Y3RUcmVlUGFyZW50fXJldHVybiExfXJldHVybiEwfWFzeW5jIHVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUscGRmTWFuYWdlcjp0LG5ld1JlZnM6aX0pe2NvbnN0IGE9dGhpcy5kaWN0LnhyZWYscj10aGlzLmRpY3QuY2xvbmUoKSxzPXRoaXMucmVmLG49bmV3IFJlZlNldENhY2hlO24ucHV0KHMscik7bGV0IG8sZz1yLmdldFJhdygiUGFyZW50VHJlZSIpO2lmKGcgaW5zdGFuY2VvZiBSZWYpbz1hLmZldGNoKGcpO2Vsc2V7bz1nO2c9YS5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnNldCgiUGFyZW50VHJlZSIsZyl9bz1vLmNsb25lKCk7bi5wdXQoZyxvKTtsZXQgYz1vLmdldFJhdygiTnVtcyIpLEM9bnVsbDtpZihjIGluc3RhbmNlb2YgUmVmKXtDPWM7Yz1hLmZldGNoKEMpfWM9Yy5zbGljZSgpO0N8fG8uc2V0KCJOdW1zIixjKTtjb25zdCBoPWF3YWl0IFN0cnVjdFRyZWVSb290LiNMKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnMsa2lkczpudWxsLG51bXM6Yyx4cmVmOmEscGRmTWFuYWdlcjp0LGNhY2hlOm59KTtyLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLGgpO0MmJm4ucHV0KEMsYyk7Y29uc3QgbD1bXTtmb3IoY29uc3RbZSx0XW9mIG4uaXRlbXMoKSl7bC5sZW5ndGg9MDthd2FpdCB3cml0ZU9iamVjdChlLHQsbCxhKTtpLnB1c2goe3JlZjplLGRhdGE6bC5qb2luKCIiKX0pfX1zdGF0aWMgYXN5bmMjTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGtpZHM6aSxudW1zOmEseHJlZjpyLHBkZk1hbmFnZXI6cyxjYWNoZTpufSl7Y29uc3Qgbz1OYW1lLmdldCgiT0JKUiIpO2xldCBnPS0xLzA7Zm9yKGNvbnN0W2MsQ11vZiBlKXtjb25zdHtyZWY6ZX09YXdhaXQgcy5nZXRQYWdlKGMpLGg9ZSBpbnN0YW5jZW9mIFJlZjtmb3IoY29uc3R7YWNjZXNzaWJpbGl0eURhdGE6cyxyZWY6YyxwYXJlbnRUcmVlSWQ6bCxzdHJ1Y3RUcmVlUGFyZW50OlF9b2YgQyl7aWYoIXM/LnR5cGUpY29udGludWU7Y29uc3R7dHlwZTpDLHRpdGxlOkUsbGFuZzp1LGFsdDpkLGV4cGFuZGVkOmYsYWN0dWFsVGV4dDpwfT1zO2c9TWF0aC5tYXgoZyxsKTtjb25zdCBtPXIuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkseT1uZXcgRGljdChyKTt5LnNldCgiUyIsTmFtZS5nZXQoQykpO0UmJnkuc2V0KCJUIixFKTt1JiZ5LnNldCgiTGFuZyIsdSk7ZCYmeS5zZXQoIkFsdCIsZCk7ZiYmeS5zZXQoIkUiLGYpO3AmJnkuc2V0KCJBY3R1YWxUZXh0IixwKTthd2FpdCB0aGlzLiNKKHtzdHJ1Y3RUcmVlUGFyZW50OlEsdGFnRGljdDp5LG5ld1RhZ1JlZjptLHN0cnVjdFRyZWVSb290UmVmOnQsZmFsbGJhY2tLaWRzOmkseHJlZjpyLGNhY2hlOm59KTtjb25zdCB3PW5ldyBEaWN0KHIpO3kuc2V0KCJLIix3KTt3LnNldCgiVHlwZSIsbyk7aCYmdy5zZXQoIlBnIixlKTt3LnNldCgiT2JqIixjKTtuLnB1dChtLHkpO2EucHVzaChsLG0pfX1yZXR1cm4gZysxfXN0YXRpYyNIKHtlbGVtZW50czplLHhyZWY6dCxwYWdlRGljdDppLG51bWJlclRyZWU6YX0pe2NvbnN0IHI9bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBlKWlmKHQuc3RydWN0VHJlZVBhcmVudElkKXtjb25zdCBlPXBhcnNlSW50KHQuc3RydWN0VHJlZVBhcmVudElkLnNwbGl0KCJfbWMiKVsxXSwxMCk7bGV0IGk9ci5nZXQoZSk7aWYoIWkpe2k9W107ci5zZXQoZSxpKX1pLnB1c2godCl9Y29uc3Qgcz1pLmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXJldHVybjtjb25zdCBuPWEuZ2V0KHMpLHVwZGF0ZUVsZW1lbnQ9KGUsaSxhKT0+e2NvbnN0IHM9ci5nZXQoZSk7aWYocyl7Y29uc3QgZT1pLmdldFJhdygiUCIpLHI9dC5mZXRjaElmUmVmKGUpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJnIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXtyZWY6YSxkaWN0Oml9O2Zvcihjb25zdCB0IG9mIHMpdC5zdHJ1Y3RUcmVlUGFyZW50PWV9cmV0dXJuITB9cmV0dXJuITF9O2Zvcihjb25zdCBlIG9mIG4pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpY29udGludWU7Y29uc3QgaT10LmZldGNoKGUpLGE9aS5nZXQoIksiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpKXVwZGF0ZUVsZW1lbnQoYSxpLGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IHIgb2YgYSl7cj10LmZldGNoSWZSZWYocik7aWYoTnVtYmVyLmlzSW50ZWdlcihyKSYmdXBkYXRlRWxlbWVudChyLGksZSkpYnJlYWs7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoIWlzTmFtZShyLmdldCgiVHlwZSIpLCJNQ1IiKSlicmVhaztjb25zdCBhPXIuZ2V0KCJNQ0lEIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmdXBkYXRlRWxlbWVudChhLGksZSkpYnJlYWt9fX1zdGF0aWMgYXN5bmMjSih7c3RydWN0VHJlZVBhcmVudDplLHRhZ0RpY3Q6dCxuZXdUYWdSZWY6aSxzdHJ1Y3RUcmVlUm9vdFJlZjphLGZhbGxiYWNrS2lkczpyLHhyZWY6cyxjYWNoZTpufSl7bGV0IG8sZz1udWxsO2lmKGUpeyh7cmVmOmd9PWUpO289ZS5kaWN0LmdldFJhdygiUCIpfHxhfWVsc2Ugbz1hO3Quc2V0KCJQIixvKTtjb25zdCBjPXMuZmV0Y2hJZlJlZihvKTtpZighYyl7ci5wdXNoKGkpO3JldHVybn1sZXQgQz1uLmdldChvKTtpZighQyl7Qz1jLmNsb25lKCk7bi5wdXQobyxDKX1jb25zdCBoPUMuZ2V0UmF3KCJLIik7bGV0IGw9aCBpbnN0YW5jZW9mIFJlZj9uLmdldChoKTpudWxsO2lmKCFsKXtsPXMuZmV0Y2hJZlJlZihoKTtsPUFycmF5LmlzQXJyYXkobCk/bC5zbGljZSgpOltoXTtjb25zdCBlPXMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Qy5zZXQoIksiLGUpO24ucHV0KGUsbCl9Y29uc3QgUT1sLmluZGV4T2YoZyk7bC5zcGxpY2UoUT49MD9RKzE6bC5sZW5ndGgsMCxpKX19Y2xhc3MgU3RydWN0RWxlbWVudE5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZTt0aGlzLmRpY3Q9dDt0aGlzLmtpZHM9W107dGhpcy5wYXJzZUtpZHMoKX1nZXQgcm9sZSgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUyIpLHQ9ZSBpbnN0YW5jZW9mIE5hbWU/ZS5uYW1lOiIiLHtyb290Oml9PXRoaXMudHJlZTtyZXR1cm4gaS5yb2xlTWFwLmhhcyh0KT9pLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIFJlZiYmKGU9dC50b1N0cmluZygpKTtjb25zdCBpPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KGkpKWZvcihjb25zdCB0IG9mIGkpe2NvbnN0IGk9dGhpcy5wYXJzZUtpZChlLHQpO2kmJnRoaXMua2lkcy5wdXNoKGkpfWVsc2V7Y29uc3QgdD10aGlzLnBhcnNlS2lkKGUsaSk7dCYmdGhpcy5raWRzLnB1c2godCl9fXBhcnNlS2lkKGUsdCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZT9udWxsOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOnFyLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2xldCBpPW51bGw7dCBpbnN0YW5jZW9mIFJlZj9pPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiBEaWN0JiYoaT10KTtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBhPWkuZ2V0UmF3KCJQZyIpO2EgaW5zdGFuY2VvZiBSZWYmJihlPWEudG9TdHJpbmcoKSk7Y29uc3Qgcj1pLmdldCgiVHlwZSIpaW5zdGFuY2VvZiBOYW1lP2kuZ2V0KCJUeXBlIikubmFtZTpudWxsO2lmKCJNQ1IiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJTdG0iKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6T3IscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOmkuZ2V0KCJNQ0lEIil9KX1pZigiT0JKUiI9PT1yKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IHQ9aS5nZXRSYXcoIk9iaiIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpQcixyZWZPYmpJZDp0IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplfSl9cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmpyLGRpY3Q6aX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDppPW51bGwscGFnZU9iaklkOmE9bnVsbCxyZWZPYmpJZDpyPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9aTt0aGlzLnBhZ2VPYmpJZD1hO3RoaXMucmVmT2JqSWQ9cjt0aGlzLnBhcmVudE5vZGU9bnVsbH19Y2xhc3MgU3RydWN0VHJlZVBhZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnJvb3Q9ZTt0aGlzLnJvb3REaWN0PWU/ZS5kaWN0Om51bGw7dGhpcy5wYWdlRGljdD10O3RoaXMubm9kZXM9W119cGFyc2UoZSl7aWYoIXRoaXMucm9vdHx8IXRoaXMucm9vdERpY3QpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9ZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwLHM9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoaSkpe2NvbnN0IGU9cy5nZXQoaSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSx0XW9mIGEpe2NvbnN0IGk9cy5nZXQoZSk7aWYoaSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoSWZSZWYoaSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT1QciYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7Y29uc3Qgcj1lLmdldCgiUCIpO2lmKCFyfHxpc05hbWUoci5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxhKXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9Y29uc3Qgcz10aGlzLmFkZE5vZGUocix0LGkrMSk7aWYoIXMpcmV0dXJuIGE7bGV0IG49ITE7Zm9yKGNvbnN0IHQgb2Ygcy5raWRzKWlmKHQudHlwZT09PWpyJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9YTtuPSEwfW58fHQuZGVsZXRlKGUpO3JldHVybiBhfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGk9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighaSlyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgRGljdCl7aWYoaS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKXtjb25zdCBzPWlbcl07aWYocz8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDthPSEwfX1yZXR1cm4gYX1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7Y29uc3Qgcj1lLmRpY3QuZ2V0KCJBbHQiKTsic3RyaW5nIj09dHlwZW9mIHImJihhLmFsdD1zdHJpbmdUb1BERlN0cmluZyhyKSk7Y29uc3Qgcz1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBzJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKHMpKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09anI/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLGkrMSk6dC50eXBlPT09cXJ8fHQudHlwZT09PU9yP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT1Qcj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PVdyJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIGlzVmFsaWRFeHBsaWNpdERlc3QoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbdCxpLC4uLmFdPWU7aWYoISh0IGluc3RhbmNlb2YgUmVmfHxOdW1iZXIuaXNJbnRlZ2VyKHQpKSlyZXR1cm4hMTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4hMTtsZXQgcj0hMDtzd2l0Y2goaS5uYW1lKXtjYXNlIlhZWiI6aWYoMyE9PWEubGVuZ3RoKXJldHVybiExO2JyZWFrO2Nhc2UiRml0IjpjYXNlIkZpdEIiOnJldHVybiAwPT09YS5sZW5ndGg7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKDEhPT1hLmxlbmd0aClyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1hLmxlbmd0aClyZXR1cm4hMTtyPSExO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9Zm9yKGNvbnN0IGUgb2YgYSlpZighKCJudW1iZXIiPT10eXBlb2YgZXx8ciYmbnVsbD09PWUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGZldGNoRGVzdChlKXtlIGluc3RhbmNlb2YgRGljdCYmKGU9ZS5nZXQoIkQiKSk7cmV0dXJuIGlzVmFsaWRFeHBsaWNpdERlc3QoZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCk7aWYoaXNWYWxpZEV4cGxpY2l0RGVzdCh0KSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIG51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3Q7dGhpcy5fYWN0dWFsTnVtUGFnZXM9bnVsbDt0aGlzLmZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IEdsb2JhbEltYWdlQ2FjaGU7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMucGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgUmVmU2V0O3RoaXMuc3lzdGVtRm9udENhY2hlPW5ldyBNYXB9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuX2NhdERpY3QuY2xvbmUoKX1nZXQgdmVyc2lvbigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZlcnNpb24iKTtpZihlIGluc3RhbmNlb2YgTmFtZSl7aWYoU3QudGVzdChlLm5hbWUpKXJldHVybiBzaGFkb3codGhpcywidmVyc2lvbiIsZS5uYW1lKTt3YXJuKGBJbnZhbGlkIFBERiBjYXRhbG9nIHZlcnNpb246ICR7ZS5uYW1lfWApfXJldHVybiBzaGFkb3codGhpcywidmVyc2lvbiIsbnVsbCl9Z2V0IGxhbmcoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsIm5lZWRzUmVuZGVyaW5nIiwiYm9vbGVhbiI9PXR5cGVvZiBlJiZlKX1nZXQgY29sbGVjdGlvbigpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkNvbGxlY3Rpb24iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjb2xsZWN0aW9uIixlKX1nZXQgYWNyb0Zvcm0oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJBY3JvRm9ybSIpO3JldHVybiBzaGFkb3codGhpcywiYWNyb0Zvcm1SZWYiLGUgaW5zdGFuY2VvZiBSZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsbnVsbCk7bGV0IHQ9bnVsbDt0cnl7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2goZSwhdGhpcy54cmVmLmVuY3J5cHQ/LmVuY3J5cHRNZXRhZGF0YSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmkuZGljdCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9aS5kaWN0LmdldCgiVHlwZSIpLGE9aS5kaWN0LmdldCgiU3VidHlwZSIpO2lmKGlzTmFtZShlLCJNZXRhZGF0YSIpJiZpc05hbWUoYSwiWE1MIikpe2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGkuZ2V0U3RyaW5nKCkpO2UmJih0PW5ldyBNZXRhZGF0YVBhcnNlcihlKS5zZXJpYWxpemFibGUpfX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLHQpfWdldCBtYXJrSW5mbygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZE1hcmtJbmZvKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgbWFyayBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IHQ9e01hcmtlZDohMSxVc2VyUHJvcGVydGllczohMSxTdXNwZWN0czohMX07Zm9yKGNvbnN0IGkgaW4gdCl7Y29uc3QgYT1lLmdldChpKTsiYm9vbGVhbiI9PXR5cGVvZiBhJiYodFtpXT1hKX1yZXR1cm4gdH1nZXQgc3RydWN0VHJlZVJvb3QoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRTdHJ1Y3RUcmVlUm9vdCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSByZWFkIHRvIHN0cnVjdFRyZWVSb290IGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlN0cnVjdFRyZWVSb290IiksdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBpPW5ldyBTdHJ1Y3RUcmVlUm9vdCh0LGUpO2kuaW5pdCgpO3JldHVybiBpfWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5LiIpO3JldHVybiBzaGFkb3codGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRPdXRsaW5lIixlKX1fcmVhZERvY3VtZW50T3V0bGluZSgpe2xldCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPdXRsaW5lcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXtpdGVtczpbXX0saT1be29iajplLHBhcmVudDp0fV0sYT1uZXcgUmVmU2V0O2EucHV0KGUpO2NvbnN0IHI9dGhpcy54cmVmLHM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHQ9aS5zaGlmdCgpLG49ci5mZXRjaElmUmVmKHQub2JqKTtpZihudWxsPT09biljb250aW51ZTtuLmhhcygiVGl0bGUiKXx8d2FybigiSW52YWxpZCBvdXRsaW5lIGl0ZW0gZW5jb3VudGVyZWQuIik7Y29uc3Qgbz17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0Om4scmVzdWx0T2JqOm8sZG9jQmFzZVVybDp0aGlzLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6dGhpcy5hdHRhY2htZW50c30pO2NvbnN0IGc9bi5nZXQoIlRpdGxlIiksYz1uLmdldCgiRiIpfHwwLEM9bi5nZXRBcnJheSgiQyIpLGg9bi5nZXQoIkNvdW50Iik7bGV0IGw9czshaXNOdW1iZXJBcnJheShDLDMpfHwwPT09Q1swXSYmMD09PUNbMV0mJjA9PT1DWzJdfHwobD1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihDLDApKTtjb25zdCBRPXthY3Rpb246by5hY3Rpb24sYXR0YWNobWVudDpvLmF0dGFjaG1lbnQsZGVzdDpvLmRlc3QsdXJsOm8udXJsLHVuc2FmZVVybDpvLnVuc2FmZVVybCxuZXdXaW5kb3c6by5uZXdXaW5kb3csc2V0T0NHU3RhdGU6by5zZXRPQ0dTdGF0ZSx0aXRsZToic3RyaW5nIj09dHlwZW9mIGc/c3RyaW5nVG9QREZTdHJpbmcoZyk6IiIsY29sb3I6bCxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKGgpP2g6dm9pZCAwLGJvbGQ6ISEoMiZjKSxpdGFsaWM6ISEoMSZjKSxpdGVtczpbXX07dC5wYXJlbnQuaXRlbXMucHVzaChRKTtlPW4uZ2V0UmF3KCJGaXJzdCIpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJiFhLmhhcyhlKSl7aS5wdXNoKHtvYmo6ZSxwYXJlbnQ6UX0pO2EucHV0KGUpfWU9bi5nZXRSYXcoIk5leHQiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7YS5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBlcm1pc3Npb25zLiIpfXJldHVybiBzaGFkb3codGhpcywicGVybWlzc2lvbnMiLGUpfV9yZWFkUGVybWlzc2lvbnMoKXtjb25zdCBlPXRoaXMueHJlZi50cmFpbGVyLmdldCgiRW5jcnlwdCIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGk9W107Zm9yKGNvbnN0IGUgaW4geSl7Y29uc3QgYT15W2VdO3QmYSYmaS5wdXNoKGEpfXJldHVybiBpfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgaT10LmdldCgiRCIpO2lmKCFpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJPQ0dzIik7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHI9W10scz1uZXcgUmVmU2V0O2Zvcihjb25zdCBlIG9mIGEpaWYoZSBpbnN0YW5jZW9mIFJlZiYmIXMuaGFzKGUpKXtzLnB1dChlKTtyLnB1c2godGhpcy4jWShlKSl9ZT10aGlzLiN2KGkscyk7ZS5ncm91cHM9cn1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jWShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxpPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH19LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihpLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCByPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7ci5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGkuaW50ZW50PXIubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgcz10LmdldCgiVXNhZ2UiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gaTtjb25zdCBuPWkudXNhZ2Usbz1zLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGc9cy5nZXQoIlZpZXciKTtpZihnIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1nLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4udmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBpfSN2KGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmaS5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGk9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhzKSl7YS5wdXQocyk7ci5wdXNoKHMudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHMsaSk7ZSYmci5wdXNoKGUpfWlmKGk+MClyZXR1cm4gcjtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIHQpYS5oYXMoZSl8fHMucHVzaChlLnRvU3RyaW5nKCkpO3MubGVuZ3RoJiZyLnB1c2goe25hbWU6bnVsbCxvcmRlcjpzfSk7cmV0dXJuIHJ9ZnVuY3Rpb24gcGFyc2VOZXN0ZWRPcmRlcihlLHQpe2lmKCsrdD5yKXt3YXJuKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKTtyZXR1cm4gbnVsbH1jb25zdCBhPWkuZmV0Y2hJZlJlZihlKTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gbnVsbDtjb25zdCBzPWkuZmV0Y2hJZlJlZihhWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIHMpcmV0dXJuIG51bGw7Y29uc3Qgbj1wYXJzZU9yZGVyKGEuc2xpY2UoMSksdCk7cmV0dXJuIG4mJm4ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHMpLG9yZGVyOm59Om51bGx9Y29uc3QgaT10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHI9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBOYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cGFyc2VPbk9mZihlLmdldCgiT04iKSksb2ZmOnBhcnNlT25PZmYoZS5nZXQoIk9GRiIpKSxvcmRlcjpwYXJzZU9yZGVyKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6bnVsbH19c2V0QWN0dWFsTnVtUGFnZXMoZT1udWxsKXt0aGlzLl9hY3R1YWxOdW1QYWdlcz1lfWdldCBoYXNBY3R1YWxOdW1QYWdlcygpe3JldHVybiBudWxsIT09dGhpcy5fYWN0dWFsTnVtUGFnZXN9Z2V0IF9wYWdlc0NvdW50KCl7Y29uc3QgZT10aGlzLnRvcGxldmVsUGFnZXNEaWN0LmdldCgiQ291bnQiKTtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaW4gdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkgaXMgbm90IGFuIGludGVnZXIuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIE5hbWVUcmVlKWZvcihjb25zdFtpLGFdb2YgZS5nZXRBbGwoKSl7Y29uc3QgZT1mZXRjaERlc3QoYSk7ZSYmKHRbc3RyaW5nVG9QREZTdHJpbmcoaSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIERpY3QmJmUuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtjb25zdCBhPWZldGNoRGVzdChpKTthJiYodFtlXT1hKX0pKTtyZXR1cm4gc2hhZG93KHRoaXMsImRlc3RpbmF0aW9ucyIsdCl9Z2V0RGVzdGluYXRpb24oZSl7Y29uc3QgdD10aGlzLl9yZWFkRGVzdHMoKTtpZih0IGluc3RhbmNlb2YgTmFtZVRyZWUpe2NvbnN0IGk9ZmV0Y2hEZXN0KHQuZ2V0KGUpKTtpZihpKXJldHVybiBpO2NvbnN0IGE9dGhpcy5kZXN0aW5hdGlvbnNbZV07aWYoYSl7d2FybihgRm91bmQgIiR7ZX0iIGF0IGFuIGluY29ycmVjdCBwb3NpdGlvbiBpbiB0aGUgTmFtZVRyZWUuYCk7cmV0dXJuIGF9fWVsc2UgaWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9ZmV0Y2hEZXN0KHQuZ2V0KGUpKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfV9yZWFkRGVzdHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO3JldHVybiBlPy5oYXMoIkRlc3RzIik/bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybiBzaGFkb3codGhpcywicGFnZUxhYmVscyIsZSl9X3JlYWRQYWdlTGFiZWxzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZUxhYmVscyIpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IEFycmF5KHRoaXMubnVtUGFnZXMpO2xldCBpPW51bGwsYT0iIjtjb25zdCByPW5ldyBOdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgcz0iIixuPTE7Zm9yKGxldCBlPTAsbz10aGlzLm51bVBhZ2VzO2U8bztlKyspe2NvbnN0IG89ci5nZXQoZSk7aWYodm9pZCAwIT09byl7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlTGFiZWwgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiVHlwZSIpJiYhaXNOYW1lKG8uZ2V0KCJUeXBlIiksIlBhZ2VMYWJlbCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJTIikpe2NvbnN0IGU9by5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3R5bGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aT1lLm5hbWV9ZWxzZSBpPW51bGw7aWYoby5oYXMoIlAiKSl7Y29uc3QgZT1vLmdldCgiUCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9c3RyaW5nVG9QREZTdHJpbmcoZSl9ZWxzZSBhPSIiO2lmKG8uaGFzKCJTdCIpKXtjb25zdCBlPW8uZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO249ZX1lbHNlIG49MX1zd2l0Y2goaSl7Y2FzZSJEIjpzPW47YnJlYWs7Y2FzZSJSIjpjYXNlInIiOnM9dG9Sb21hbk51bWVyYWxzKG4sInIiPT09aSk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD0iYSI9PT1pPzk3OjY1LGE9bi0xO3M9U3RyaW5nLmZyb21DaGFyQ29kZSh0K2ElZSkucmVwZWF0KE1hdGguZmxvb3IoYS9lKSsxKTticmVhaztkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2l9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtzPSIifXRbZV09YStzO24rK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlNpbmdsZVBhZ2UiOmNhc2UiT25lQ29sdW1uIjpjYXNlIlR3b0NvbHVtbkxlZnQiOmNhc2UiVHdvQ29sdW1uUmlnaHQiOmNhc2UiVHdvUGFnZUxlZnQiOmNhc2UiVHdvUGFnZVJpZ2h0Ijp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTW9kZSIsdCl9Z2V0IHZpZXdlclByZWZlcmVuY2VzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVmlld2VyUHJlZmVyZW5jZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUuZ2V0S2V5cygpKXtjb25zdCBhPWUuZ2V0KGkpO2xldCByO3N3aXRjaChpKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgYSYmKHI9YSk7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiVXNlT0MiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iVXNlTm9uZSJ9YnJlYWs7Y2FzZSJEaXJlY3Rpb24iOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk5vbmUiOmNhc2UiQXBwRGVmYXVsdCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJBcHBEZWZhdWx0In1icmVhaztjYXNlIkR1cGxleCI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOmlmKEFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoJTI9PTApe2EuZXZlcnkoKChlLHQsaSk9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1pW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSkmJihyPWEpfWJyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKGEpJiZhPjAmJihyPWEpO2JyZWFrO2RlZmF1bHQ6d2FybihgSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtpfS5gKTtjb250aW51ZX1pZih2b2lkIDAhPT1yKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTt0W2ldPXJ9ZWxzZSB3YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7aX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIix0KX1nZXQgb3BlbkFjdGlvbigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9bmV3IERpY3QodGhpcy54cmVmKTtpLnNldCgiQSIsZSk7Y29uc3QgYT17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmkscmVzdWx0T2JqOmF9KTtBcnJheS5pc0FycmF5KGEuZGVzdCk/dC5kZXN0PWEuZGVzdDphLmFjdGlvbiYmKHQuYWN0aW9uPWEuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcGVuQWN0aW9uIixvYmplY3RTaXplKHQpPjA/dDpudWxsKX1nZXQgYXR0YWNobWVudHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IGk9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxhXW9mIGkuZ2V0QWxsKCkpe2NvbnN0IGk9bmV3IEZpbGVTcGVjKGEsdGhpcy54cmVmKTt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTt0W3N0cmluZ1RvUERGU3RyaW5nKGUpXT1pLnNlcmlhbGl6YWJsZX19cmV0dXJuIHNoYWRvdyh0aGlzLCJhdHRhY2htZW50cyIsdCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiWEZBSW1hZ2VzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxhXW9mIGkuZ2V0QWxsKCkpe3R8fCh0PW5ldyBEaWN0KHRoaXMueHJlZikpO3Quc2V0KHN0cmluZ1RvUERGU3RyaW5nKGUpLGEpfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxpKXtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47aWYoIWlzTmFtZShpLmdldCgiUyIpLCJKYXZhU2NyaXB0IikpcmV0dXJuO2xldCBhPWkuZ2V0KCJKUyIpO2lmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWE9YS5nZXRTdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm47YT1zdHJpbmdUb1BERlN0cmluZyhhKS5yZXBsYWNlQWxsKCJcMCIsIiIpO2EmJih0fHw9bmV3IE1hcCkuc2V0KGUsYSl9aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJKYXZhU2NyaXB0IiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxpXW9mIHQuZ2V0QWxsKCkpYXBwZW5kSWZKYXZhU2NyaXB0RGljdChzdHJpbmdUb1BERlN0cmluZyhlKSxpKX1jb25zdCBpPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIik7aSYmYXBwZW5kSWZKYXZhU2NyaXB0RGljdCgiT3BlbkFjdGlvbiIsaSk7cmV0dXJuIHR9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD1jb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxwQSk7aWYoZSl7dHx8PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2ksYV1vZiBlKWkgaW4gdD90W2ldLnB1c2goYSk6dFtpXT1bYV19cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGZvbnRGYWxsYmFjayhlLHQpe2NvbnN0IGk9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdCBhIG9mIGkpaWYoYS5sb2FkZWROYW1lPT09ZSl7YS5mYWxsYmFjayh0KTtyZXR1cm59fWFzeW5jIGNsZWFudXAoZT0hMSl7Y2xlYXJHbG9iYWxDYWNoZXMoKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuY2xlYXIoZSk7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VJbmRleENhY2hlLmNsZWFyKCk7dGhpcy5ub25CbGVuZE1vZGVzU2V0LmNsZWFyKCk7Y29uc3QgdD1hd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSk7Zm9yKGNvbnN0e2RpY3Q6ZX1vZiB0KWRlbGV0ZSBlLmNhY2hlS2V5O3RoaXMuZm9udENhY2hlLmNsZWFyKCk7dGhpcy5idWlsdEluQ01hcENhY2hlLmNsZWFyKCk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuY2xlYXIoKTt0aGlzLnN5c3RlbUZvbnRDYWNoZS5jbGVhcigpfWFzeW5jIGdldFBhZ2VEaWN0KGUpe2NvbnN0IHQ9W3RoaXMudG9wbGV2ZWxQYWdlc0RpY3RdLGk9bmV3IFJlZlNldCxhPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpO2EgaW5zdGFuY2VvZiBSZWYmJmkucHV0KGEpO2NvbnN0IHI9dGhpcy54cmVmLHM9dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsbj10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBvPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IGE9dC5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtjb25zdCBnPXMuZ2V0KGEpO2lmKGc+PTAmJm8rZzw9ZSl7bys9Zztjb250aW51ZX1pZihpLmhhcyhhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO2kucHV0KGEpO2NvbnN0IGM9YXdhaXQgci5mZXRjaEFzeW5jKGEpO2lmKGMgaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1jLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWMuaGFzKCJLaWRzIikpe3MuaGFzKGEpfHxzLnB1dChhLDEpO24uaGFzKGEpfHxuLnB1dChhLG8pO2lmKG89PT1lKXJldHVybltjLGFdO28rKztjb250aW51ZX19dC5wdXNoKGMpO2NvbnRpbnVlfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmd9PWE7bGV0IGM9YS5nZXRSYXcoIkNvdW50Iik7YyBpbnN0YW5jZW9mIFJlZiYmKGM9YXdhaXQgci5mZXRjaEFzeW5jKGMpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGMpJiZjPj0wKXtnJiYhcy5oYXMoZykmJnMucHV0KGcsYyk7aWYobytjPD1lKXtvKz1jO2NvbnRpbnVlfX1sZXQgQz1hLmdldFJhdygiS2lkcyIpO0MgaW5zdGFuY2VvZiBSZWYmJihDPWF3YWl0IHIuZmV0Y2hBc3luYyhDKSk7aWYoIUFycmF5LmlzQXJyYXkoQykpe2xldCB0PWEuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgci5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYS5oYXMoIktpZHMiKSl7aWYobz09PWUpcmV0dXJuW2EsbnVsbF07bysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9Qy5sZW5ndGgtMTtlPj0wO2UtLSl0LnB1c2goQ1tlXSl9dGhyb3cgbmV3IEVycm9yKGBQYWdlIGluZGV4ICR7ZX0gbm90IGZvdW5kLmApfWFzeW5jIGdldEFsbFBhZ2VEaWN0cyhlPSExKXtjb25zdHtpZ25vcmVFcnJvcnM6dH09dGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMsaT1be2N1cnJlbnROb2RlOnRoaXMudG9wbGV2ZWxQYWdlc0RpY3QscG9zSW5LaWRzOjB9XSxhPW5ldyBSZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgUmVmJiZhLnB1dChyKTtjb25zdCBzPW5ldyBNYXAsbj10aGlzLnhyZWYsbz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBnPTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhby5oYXModCkmJm8ucHV0KHQsZyk7cy5zZXQoZysrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3IoaSl7aWYoaSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgaTtpZihlJiZ0JiYwPT09Zyl7d2FybihgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHtpfSIuYCk7aT1EaWN0LmVtcHR5fXMuc2V0KGcrKyxbaSxudWxsXSl9Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3QgZT1pLmF0KC0xKSx7Y3VycmVudE5vZGU6dCxwb3NJbktpZHM6cn09ZTtsZXQgcz10LmdldFJhdygiS2lkcyIpO2lmKHMgaW5zdGFuY2VvZiBSZWYpdHJ5e3M9YXdhaXQgbi5mZXRjaEFzeW5jKHMpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShzKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocj49cy5sZW5ndGgpe2kucG9wKCk7Y29udGludWV9Y29uc3Qgbz1zW3JdO2xldCBnO2lmKG8gaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKG8pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9YS5wdXQobyk7dHJ5e2c9YXdhaXQgbi5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBnPW87aWYoIShnIGluc3RhbmNlb2YgRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKSk7YnJlYWt9bGV0IGM9Zy5nZXRSYXcoIlR5cGUiKTtpZihjIGluc3RhbmNlb2YgUmVmKXRyeXtjPWF3YWl0IG4uZmV0Y2hBc3luYyhjKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aXNOYW1lKGMsIlBhZ2UiKXx8IWcuaGFzKCJLaWRzIik/YWRkUGFnZURpY3QoZyxvIGluc3RhbmNlb2YgUmVmP286bnVsbCk6aS5wdXNoKHtjdXJyZW50Tm9kZTpnLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gc31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgaT10aGlzLnhyZWY7bGV0IGE9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCBhLHI9MDtyZXR1cm4gaS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGkpe2lmKGlzUmVmc0VxdWFsKHQsZSkmJiFpc0RpY3QoaSwiUGFnZSIpJiYhKGkgaW5zdGFuY2VvZiBEaWN0JiYhaS5oYXMoIlR5cGUiKSYmaS5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIWkpcmV0dXJuIG51bGw7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2E9aS5nZXRSYXcoIlBhcmVudCIpO3JldHVybiBpLmdldEFzeW5jKCJQYXJlbnQiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9W107bGV0IG49ITE7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoIShhIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKGlzUmVmc0VxdWFsKGEsdCkpe249ITA7YnJlYWt9cy5wdXNoKGkuZmV0Y2hBc3luYyhhKS50aGVuKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBub2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2UuaGFzKCJDb3VudCIpP3IrPWUuZ2V0KCJDb3VudCIpOnIrK30pKSl9aWYoIW4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgcmVmZXJlbmNlIG5vdCBmb3VuZCBpbiBwYXJlbnQncyBraWRzLiIpO3JldHVybiBQcm9taXNlLmFsbChzKS50aGVuKChmdW5jdGlvbigpe3JldHVybltyLGFdfSkpfSkpfSh0KS50aGVuKCh0PT57aWYoIXQpe3RoaXMucGFnZUluZGV4Q2FjaGUucHV0KGUsYSk7cmV0dXJuIGF9Y29uc3RbaSxyXT10O2ErPWk7cmV0dXJuIG5leHQocil9KSk7cmV0dXJuIG5leHQoZSl9Z2V0IGJhc2VVcmwoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLGUuaHJlZil9fXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsdGhpcy5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLHJlc3VsdE9iajp0LGRvY0Jhc2VVcmw6aT1udWxsLGRvY0F0dGFjaG1lbnRzOmE9bnVsbH0pe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1sZXQgcixzLG49ZS5nZXQoIkEiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlpZihlLmhhcygiRGVzdCIpKW49ZS5nZXQoIkRlc3QiKTtlbHNle249ZS5nZXQoIkFBIik7biBpbnN0YW5jZW9mIERpY3QmJihuLmhhcygiRCIpP249bi5nZXQoIkQiKTpuLmhhcygiVSIpJiYobj1uLmdldCgiVSIpKSl9aWYobiBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bi5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogSW52YWxpZCB0eXBlIGluIEFjdGlvbiBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBpPWUubmFtZTtzd2l0Y2goaSl7Y2FzZSJSZXNldEZvcm0iOmNvbnN0IGU9bi5nZXQoIkZsYWdzIiksbz0wPT0oMSYoIm51bWJlciI9PXR5cGVvZiBlP2U6MCkpLGc9W10sYz1bXTtmb3IoY29uc3QgZSBvZiBuLmdldCgiRmllbGRzIil8fFtdKWUgaW5zdGFuY2VvZiBSZWY/Yy5wdXNoKGUudG9TdHJpbmcoKSk6InN0cmluZyI9PXR5cGVvZiBlJiZnLnB1c2goc3RyaW5nVG9QREZTdHJpbmcoZSkpO3QucmVzZXRGb3JtPXtmaWVsZHM6ZyxyZWZzOmMsaW5jbHVkZTpvfTticmVhaztjYXNlIlVSSSI6cj1uLmdldCgiVVJJIik7ciBpbnN0YW5jZW9mIE5hbWUmJihyPSIvIityLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6cz1uLmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBDPW4uZ2V0KCJGIik7aWYoQyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bmV3IEZpbGVTcGVjKEMsbnVsbCwhMCkse3Jhd0ZpbGVuYW1lOnR9PWUuc2VyaWFsaXphYmxlO3I9dH1lbHNlInN0cmluZyI9PXR5cGVvZiBDJiYocj1DKTtjb25zdCBoPWZldGNoUmVtb3RlRGVzdChuKTtoJiYic3RyaW5nIj09dHlwZW9mIHImJihyPXIuc3BsaXQoIiMiLDEpWzBdKyIjIitoKTtjb25zdCBsPW4uZ2V0KCJOZXdXaW5kb3ciKTsiYm9vbGVhbiI9PXR5cGVvZiBsJiYodC5uZXdXaW5kb3c9bCk7YnJlYWs7Y2FzZSJHb1RvRSI6Y29uc3QgUT1uLmdldCgiVCIpO2xldCBFO2lmKGEmJlEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVEuZ2V0KCJSIiksdD1RLmdldCgiTiIpO2lzTmFtZShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKEU9YVtzdHJpbmdUb1BERlN0cmluZyh0KV0pfWlmKEUpe3QuYXR0YWNobWVudD1FO2NvbnN0IGU9ZmV0Y2hSZW1vdGVEZXN0KG4pO2UmJih0LmF0dGFjaG1lbnREZXN0PWUpfWVsc2Ugd2FybigncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3QgdT1uLmdldCgiTiIpO3UgaW5zdGFuY2VvZiBOYW1lJiYodC5hY3Rpb249dS5uYW1lKTticmVhaztjYXNlIlNldE9DR1N0YXRlIjpjb25zdCBkPW4uZ2V0KCJTdGF0ZSIpLGY9bi5nZXQoIlByZXNlcnZlUkIiKTtpZighQXJyYXkuaXNBcnJheShkKXx8MD09PWQubGVuZ3RoKWJyZWFrO2NvbnN0IHA9W107Zm9yKGNvbnN0IGUgb2YgZClpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOnAucHVzaChlLm5hbWUpfWVsc2UgZSBpbnN0YW5jZW9mIFJlZiYmcC5wdXNoKGUudG9TdHJpbmcoKSk7aWYocC5sZW5ndGghPT1kLmxlbmd0aClicmVhazt0LnNldE9DR1N0YXRlPXtzdGF0ZTpwLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgZnx8Zn07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBtPW4uZ2V0KCJKUyIpO2xldCB5O20gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3k9bS5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIG0mJih5PW0pO2NvbnN0IHc9eSYmcmVjb3ZlckpzVVJMKHN0cmluZ1RvUERGU3RyaW5nKHkpKTtpZih3KXtyPXcudXJsO3QubmV3V2luZG93PXcubmV3V2luZG93O2JyZWFrfWRlZmF1bHQ6aWYoIkphdmFTY3JpcHQiPT09aXx8IlN1Ym1pdEZvcm0iPT09aSlicmVhazt3YXJuKGBwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5zdXBwb3J0ZWQgYWN0aW9uOiAiJHtpfSIuYCl9fWVsc2UgZS5oYXMoIkRlc3QiKSYmKHM9ZS5nZXQoIkRlc3QiKSk7aWYoInN0cmluZyI9PXR5cGVvZiByKXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwocixpLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7ZSYmKHQudXJsPWUuaHJlZik7dC51bnNhZmVVcmw9cn1pZihzKXtzIGluc3RhbmNlb2YgTmFtZSYmKHM9cy5uYW1lKTsic3RyaW5nIj09dHlwZW9mIHM/dC5kZXN0PXN0cmluZ1RvUERGU3RyaW5nKHMpOmlzVmFsaWRFeHBsaWNpdERlc3QocykmJih0LmRlc3Q9cyl9fX1mdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBhIG9mIGUpKChpPWEpaW5zdGFuY2VvZiBSZWZ8fGkgaW5zdGFuY2VvZiBEaWN0fHxpIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShpKSkmJnQucHVzaChhKTt2YXIgaX1jbGFzcyBPYmplY3RMb2FkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGljdD1lO3RoaXMua2V5cz10O3RoaXMueHJlZj1pO3RoaXMucmVmU2V0PW51bGx9YXN5bmMgbG9hZCgpe2lmKHRoaXMueHJlZi5zdHJlYW0uaXNEYXRhTG9hZGVkKXJldHVybjtjb25zdHtrZXlzOmUsZGljdDp0fT10aGlzO3RoaXMucmVmU2V0PW5ldyBSZWZTZXQ7Y29uc3QgaT1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPXQuZ2V0UmF3KGEpO3ZvaWQgMCE9PWUmJmkucHVzaChlKX1yZXR1cm4gdGhpcy5fd2FsayhpKX1hc3luYyBfd2FsayhlKXtjb25zdCB0PVtdLGk9W107Zm9yKDtlLmxlbmd0aDspe2xldCBhPWUucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYodGhpcy5yZWZTZXQuaGFzKGEpKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQoYSk7YT10aGlzLnhyZWYuZmV0Y2goYSl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXt3YXJuKGBPYmplY3RMb2FkZXIuX3dhbGsgLSByZXF1ZXN0aW5nIGFsbCBkYXRhOiAiJHtlfSIuYCk7dGhpcy5yZWZTZXQ9bnVsbDtjb25zdHttYW5hZ2VyOnR9PXRoaXMueHJlZi5zdHJlYW07cmV0dXJuIHQucmVxdWVzdEFsbENodW5rcygpfXQucHVzaChhKTtpLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWEuZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgcj0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7cj0hMDtpLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9ciYmdC5wdXNoKGEpfX1hZGRDaGlsZHJlbihhLGUpfWlmKGkubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhpKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX1jb25zdCBYcj1TeW1ib2woKSxacj1TeW1ib2woKSxWcj1TeW1ib2woKSxfcj1TeW1ib2woKSx6cj1TeW1ib2woKSwkcj1TeW1ib2woKSxBcz1TeW1ib2woKSxlcz1TeW1ib2woKSx0cz1TeW1ib2woKSxpcz1TeW1ib2woImNvbnRlbnQiKSxhcz1TeW1ib2woImRhdGEiKSxycz1TeW1ib2woKSxzcz1TeW1ib2woImV4dHJhIiksbnM9U3ltYm9sKCksb3M9U3ltYm9sKCksZ3M9U3ltYm9sKCksSXM9U3ltYm9sKCksY3M9U3ltYm9sKCksQ3M9U3ltYm9sKCksaHM9U3ltYm9sKCksbHM9U3ltYm9sKCksQnM9U3ltYm9sKCksUXM9U3ltYm9sKCksRXM9U3ltYm9sKCksdXM9U3ltYm9sKCksZHM9U3ltYm9sKCksZnM9U3ltYm9sKCkscHM9U3ltYm9sKCksbXM9U3ltYm9sKCkseXM9U3ltYm9sKCksd3M9U3ltYm9sKCksYnM9U3ltYm9sKCksRHM9U3ltYm9sKCksRnM9U3ltYm9sKCksU3M9U3ltYm9sKCksa3M9U3ltYm9sKCksUnM9U3ltYm9sKCksTnM9U3ltYm9sKCksR3M9U3ltYm9sKCkseHM9U3ltYm9sKCksVXM9U3ltYm9sKCksTXM9U3ltYm9sKCksTHM9U3ltYm9sKCksSHM9U3ltYm9sKCksSnM9U3ltYm9sKCksWXM9U3ltYm9sKCJuYW1lc3BhY2VJZCIpLHZzPVN5bWJvbCgibm9kZU5hbWUiKSxUcz1TeW1ib2woKSxLcz1TeW1ib2woKSxxcz1TeW1ib2woKSxPcz1TeW1ib2woKSxXcz1TeW1ib2woKSxqcz1TeW1ib2woKSxYcz1TeW1ib2woKSxacz1TeW1ib2woKSxWcz1TeW1ib2woInJvb3QiKSxfcz1TeW1ib2woKSx6cz1TeW1ib2woKSwkcz1TeW1ib2woKSxBbj1TeW1ib2woKSxlbj1TeW1ib2woKSx0bj1TeW1ib2woKSxhbj1TeW1ib2woKSxybj1TeW1ib2woKSxzbj1TeW1ib2woKSxubj1TeW1ib2woKSxvbj1TeW1ib2woKSxnbj1TeW1ib2woInVpZCIpLEluPVN5bWJvbCgpLGNuPXtjb25maWc6e2lkOjAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hjaS8iKX0sY29ubmVjdGlvblNldDp7aWQ6MSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWNvbm5lY3Rpb24tc2V0LyIpfSxkYXRhc2V0czp7aWQ6MixjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvIil9LGZvcm06e2lkOjMsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1mb3JtLyIpfSxsb2NhbGVTZXQ6e2lkOjQsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1sb2NhbGUtc2V0LyIpfSxwZGY6e2lkOjUsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwL3BkZi8iPT09ZX0sc2lnbmF0dXJlOntpZDo2LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj09PWV9LHNvdXJjZVNldDp7aWQ6NyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXNvdXJjZS1zZXQvIil9LHN0eWxlc2hlZXQ6e2lkOjgsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI9PT1lfSx0ZW1wbGF0ZTp7aWQ6OSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXRlbXBsYXRlLyIpfSx4ZGM6e2lkOjEwLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZGMvIil9LHhkcDp7aWQ6MTEsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwLyI9PT1lfSx4ZmRmOntpZDoxMixjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZmRmLyI9PT1lfSx4aHRtbDp7aWQ6MTMsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZX0seG1wbWV0YTp7aWQ6MTQsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veG1wbWV0YS8iPT09ZX19LENuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxobj0vKFsrLV0/XGQrXC4/XGQqKSguKikvO2Z1bmN0aW9uIHN0cmlwUXVvdGVzKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJyk/ZS5zbGljZSgxLC0xKTplfWZ1bmN0aW9uIGdldEludGVnZXIoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7aWYoIWUpcmV0dXJuIHQ7ZT1lLnRyaW0oKTtjb25zdCBhPXBhcnNlSW50KGUsMTApO3JldHVybiFpc05hTihhKSYmaShhKT9hOnR9ZnVuY3Rpb24gZ2V0RmxvYXQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7aWYoIWUpcmV0dXJuIHQ7ZT1lLnRyaW0oKTtjb25zdCBhPXBhcnNlRmxvYXQoZSk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6aX0pe3JldHVybiBlJiZpKGU9ZS50cmltKCkpP2U6dH1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX1mdW5jdGlvbiBnZXRNZWFzdXJlbWVudChlLHQ9IjAiKXt0fHw9IjAiO2lmKCFlKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdCBpPWUudHJpbSgpLm1hdGNoKGhuKTtpZighaSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3RbLGEscl09aSxzPXBhcnNlRmxvYXQoYSk7aWYoaXNOYU4ocykpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2lmKDA9PT1zKXJldHVybiAwO2NvbnN0IG49Q25bcl07cmV0dXJuIG4/bihzKTpzfWZ1bmN0aW9uIGdldFJhdGlvKGUpe2lmKCFlKXJldHVybntudW06MSxkZW46MX07Y29uc3QgdD1lLnRyaW0oKS5zcGxpdCgvXHMqOlxzKi8pLm1hcCgoZT0+cGFyc2VGbG9hdChlKSkpLmZpbHRlcigoZT0+IWlzTmFOKGUpKSk7MT09PXQubGVuZ3RoJiZ0LnB1c2goMSk7aWYoMD09PXQubGVuZ3RoKXJldHVybntudW06MSxkZW46MX07Y29uc3RbaSxhXT10O3JldHVybntudW06aSxkZW46YX19ZnVuY3Rpb24gZ2V0UmVsZXZhbnQoZSl7cmV0dXJuIGU/ZS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+KHtleGNsdWRlZDoiLSI9PT1lWzBdLHZpZXduYW1lOmUuc3Vic3RyaW5nKDEpfSkpKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9aTt0aGlzLmJyZWFrTm9kZT1hfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGkpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGk9dC5mb250RmFtaWx5O2xldCBhPXRoaXMuZm9udHMuZ2V0KGkpO2lmKCFhKXthPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoaSxhKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1hKX1sZXQgcj0iIjtjb25zdCBzPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9yPXM+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6cz49NzAwJiYocj0iYm9sZCIpO2lmKCFyKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lPy5pbmNsdWRlcygiQm9sZCIpKSYmKHI9ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZT8uZW5kc1dpdGgoIkl0IikpJiYocis9Iml0YWxpYyIpfXJ8fChyPSJyZWd1bGFyIik7YVtyXT1lfWdldERlZmF1bHQoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Rm9udH1maW5kKGUsdD0hMCl7bGV0IGk9dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKGkpcmV0dXJuIGk7Y29uc3QgYT0vLHwtfF98IHxib2xkaXRhbGljfGJvbGR8aXRhbGljfHJlZ3VsYXJ8aXQvZ2k7bGV0IHI9ZS5yZXBsYWNlQWxsKGEsIiIpO2k9dGhpcy5mb250cy5nZXQocik7aWYoaSl7dGhpcy5jYWNoZS5zZXQoZSxpKTtyZXR1cm4gaX1yPXIudG9Mb3dlckNhc2UoKTtjb25zdCBzPVtdO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKHQpO2lmKDA9PT1zLmxlbmd0aClmb3IoY29uc3RbLGVdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2goZSk7aWYoMD09PXMubGVuZ3RoKXtyPXIucmVwbGFjZUFsbCgvcHNtdHxtdC9naSwiIik7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCl9aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2goZSk7aWYocy5sZW5ndGg+PTEpezEhPT1zLmxlbmd0aCYmdCYmd2FybihgWEZBIC0gVG9vIG1hbnkgY2hvaWNlcyB0byBndWVzcyB0aGUgY29ycmVjdCBmb250OiAke2V9YCk7dGhpcy5jYWNoZS5zZXQoZSxzWzBdKTtyZXR1cm4gc1swXX1pZih0JiYhdGhpcy53YXJuZWQuaGFzKGUpKXt0aGlzLndhcm5lZC5hZGQoZSk7d2FybihgWEZBIC0gQ2Fubm90IGZpbmQgdGhlIGZvbnQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19ZnVuY3Rpb24gc2VsZWN0Rm9udChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfWNsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubGluZUhlaWdodD1pO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChhKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3Qgcj1hLmZpbmQoZS50eXBlZmFjZSk7aWYocil7dGhpcy5wZGZGb250PXNlbGVjdEZvbnQoZSxyKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChhKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodD8ucmVndWxhcil7Y29uc3QgZT10LnJlZ3VsYXI7cmV0dXJuW2Use3R5cGVmYWNlOmUuY3NzRm9udEluZm8uZm9udEZhbWlseSxwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfXJldHVybltudWxsLHt0eXBlZmFjZToiQ291cmllciIscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX19Y2xhc3MgRm9udFNlbGVjdG9ye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZm9udEZpbmRlcj1hO3RoaXMuc3RhY2s9W25ldyBGb250SW5mbyhlLHQsaSxhKV19cHVzaERhdGEoZSx0LGkpe2NvbnN0IGE9dGhpcy5zdGFjay5hdCgtMSk7Zm9yKGNvbnN0IHQgb2ZbInR5cGVmYWNlIiwicG9zdHVyZSIsIndlaWdodCIsInNpemUiLCJsZXR0ZXJTcGFjaW5nIl0pZVt0XXx8KGVbdF09YS54ZmFGb250W3RdKTtmb3IoY29uc3QgZSBvZlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0paXNOYU4odFtlXSkmJih0W2VdPWEucGFyYU1hcmdpbltlXSk7Y29uc3Qgcj1uZXcgRm9udEluZm8oZSx0LGl8fGEubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO3IucGRmRm9udHx8KHIucGRmRm9udD1hLnBkZkZvbnQpO3RoaXMuc3RhY2sucHVzaChyKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX1jbGFzcyBUZXh0TWVhc3VyZXtjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLmdseXBocz1bXTt0aGlzLmZvbnRTZWxlY3Rvcj1uZXcgRm9udFNlbGVjdG9yKGUsdCxpLGEpO3RoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQsaSl7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LGkpfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCksaT10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IGE9dC54ZmFGb250LmxldHRlclNwYWNpbmcscj10LnBkZkZvbnQscz1yLmxpbmVIZWlnaHR8fDEuMixuPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLHMpKmksbz1zLSh2b2lkIDA9PT1yLmxpbmVHYXA/LjI6ci5saW5lR2FwKSxnPU1hdGgubWF4KDEsbykqaSxjPWkvMWUzLEM9ci5kZWZhdWx0V2lkdGh8fHIuY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1yLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxpPXIuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWUud2lkdGh8fEM7dGhpcy5nbHlwaHMucHVzaChbdCpjK2EsbixnLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1lbHNle2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpdGhpcy5nbHlwaHMucHVzaChbaSwxLjIqaSxpLGUsITFdKTt0aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9fWNvbXB1dGUoZSl7bGV0IHQ9LTEsaT0wLGE9MCxyPTAscz0wLG49MCxvPSExLGc9ITA7Zm9yKGxldCBjPTAsQz10aGlzLmdseXBocy5sZW5ndGg7YzxDO2MrKyl7Y29uc3RbQyxoLGwsUSxFXT10aGlzLmdseXBoc1tjXSx1PSIgIj09PVEsZD1nP2w6aDtpZihFKXthPU1hdGgubWF4KGEscyk7cz0wO3IrPW47bj1kO3Q9LTE7aT0wO2c9ITF9ZWxzZSBpZih1KWlmKHMrQz5lKXthPU1hdGgubWF4KGEscyk7cz0wO3IrPW47bj1kO3Q9LTE7aT0wO289ITA7Zz0hMX1lbHNle249TWF0aC5tYXgoZCxuKTtpPXM7cys9Qzt0PWN9ZWxzZSBpZihzK0M+ZSl7cis9bjtuPWQ7aWYoLTEhPT10KXtjPXQ7YT1NYXRoLm1heChhLGkpO3M9MDt0PS0xO2k9MH1lbHNle2E9TWF0aC5tYXgoYSxzKTtzPUN9bz0hMDtnPSExfWVsc2V7cys9QztuPU1hdGgubWF4KGQsbil9fWE9TWF0aC5tYXgoYSxzKTtyKz1uK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqYSxoZWlnaHQ6cixpc0Jyb2tlbjpvfX19Y29uc3QgbG49L15bXi5bXSsvLEJuPS9eW15cXV0rLyxRbj17ZG90OjAsZG90RG90OjEsZG90SGFzaDoyLGRvdEJyYWNrZXQ6Myxkb3RQYXJlbjo0fSxFbj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3VzXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSx1bj1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGk9ITApe2xldCBhPWUubWF0Y2gobG4pO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOlFuLmRvdH1dO2xldCBuPXIubGVuZ3RoO2Zvcig7bjxlLmxlbmd0aDspe2NvbnN0IGc9bjtpZigiWyI9PT1lLmNoYXJBdChuKyspKXthPWUuc2xpY2UobikubWF0Y2goQm4pO2lmKCFhKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9cy5hdCgtMSkuaW5kZXg9IioiPT09KG89KG89YVswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQobywxMCl8fDA7bis9YVswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYztzd2l0Y2goZS5jaGFyQXQobikpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7bisrO2M9UW4uZG90RG90O2JyZWFrO2Nhc2UiIyI6bisrO2M9UW4uZG90SGFzaDticmVhaztjYXNlIlsiOmlmKGkpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Yz1Rbi5kb3RCcmFja2V0O2JyZWFrO2Nhc2UiKCI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9UW4uZG90UGFyZW47YnJlYWs7ZGVmYXVsdDpjPVFuLmRvdH1hPWUuc2xpY2UobikubWF0Y2gobG4pO2lmKCFhKWJyZWFrO1tyXT1hO24rPXIubGVuZ3RoO3MucHVzaCh7bmFtZTpyLGNhY2hlTmFtZTplLnNsaWNlKGcsbiksb3BlcmF0b3I6YyxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBvO3JldHVybiBzfWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGksYT0hMCxyPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihpLGEpO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG49RW4uZ2V0KHNbMF0ubmFtZSk7bGV0IG8sZz0wO2lmKG4pe289ITA7ZT1bbihlLHQpXTtnPTF9ZWxzZXtvPW51bGw9PT10O2U9W3R8fGVdfWZvcihsZXQgaT1zLmxlbmd0aDtnPGk7ZysrKXtjb25zdHtuYW1lOmksY2FjaGVOYW1lOmEsb3BlcmF0b3I6bixpbmRleDpjfT1zW2ddLEM9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUscztpZihyKXtzPXVuLmdldCh0KTtpZighcyl7cz1uZXcgTWFwO3VuLnNldCh0LHMpfWU9cy5nZXQoYSl9aWYoIWUpe3N3aXRjaChuKXtjYXNlIFFuLmRvdDplPXRbaHNdKGksITEpO2JyZWFrO2Nhc2UgUW4uZG90RG90OmU9dFtoc10oaSwhMCk7YnJlYWs7Y2FzZSBRbi5kb3RIYXNoOmU9dFtDc10oaSk7ZT1lLmlzWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19ciYmcy5zZXQoYSxlKX1lLmxlbmd0aD4wJiZDLnB1c2goZSl9aWYoMCE9PUMubGVuZ3RofHxvfHwwIT09ZyllPWlzRmluaXRlKGMpP0MuZmlsdGVyKChlPT5jPGUubGVuZ3RoKSkubWFwKChlPT5lW2NdKSk6Qy5mbGF0KCk7ZWxzZXtjb25zdCBpPXRbbXNdKCk7aWYoISh0PWkpKXJldHVybiBudWxsO2c9LTE7ZT1bdF19fXJldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGNyZWF0ZURhdGFOb2RlKGUsdCxpKXtjb25zdCBhPXBhcnNlRXhwcmVzc2lvbihpKTtpZighYSlyZXR1cm4gbnVsbDtpZihhLnNvbWUoKGU9PmUub3BlcmF0b3I9PT1Rbi5kb3REb3QpKSlyZXR1cm4gbnVsbDtjb25zdCByPUVuLmdldChhWzBdLm5hbWUpO2xldCBzPTA7aWYocil7ZT1yKGUsdCk7cz0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1hLmxlbmd0aDtzPHQ7cysrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6aSxpbmRleDpyfT1hW3NdO2lmKCFpc0Zpbml0ZShyKSl7YVtzXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfWxldCBuO3N3aXRjaChpKXtjYXNlIFFuLmRvdDpuPWVbaHNdKHQsITEpO2JyZWFrO2Nhc2UgUW4uZG90RG90Om49ZVtoc10odCwhMCk7YnJlYWs7Y2FzZSBRbi5kb3RIYXNoOm49ZVtDc10odCk7bj1uLmlzWEZBT2JqZWN0QXJyYXk/bi5jaGlsZHJlbjpbbl19aWYoMD09PW4ubGVuZ3RoKXJldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpO2lmKCEocjxuLmxlbmd0aCkpe2Fbc10uaW5kZXg9ci1uLmxlbmd0aDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhhLnNsaWNlKHMpKX17Y29uc3QgdD1uW3JdO2lmKCF0LmlzWEZBT2JqZWN0KXt3YXJuKCJYRkEgLSBDYW5ub3QgY3JlYXRlIGEgbm9kZS4iKTtyZXR1cm4gbnVsbH1lPXR9fXJldHVybiBudWxsfWNvbnN0IGRuPVN5bWJvbCgpLGZuPVN5bWJvbCgpLHBuPVN5bWJvbCgpLG1uPVN5bWJvbCgiX2NoaWxkcmVuIikseW49U3ltYm9sKCksd249U3ltYm9sKCksYm49U3ltYm9sKCksRG49U3ltYm9sKCksRm49U3ltYm9sKCksU249U3ltYm9sKCksa249U3ltYm9sKCksUm49U3ltYm9sKCksTm49U3ltYm9sKCksR249U3ltYm9sKCJwYXJlbnQiKSx4bj1TeW1ib2woKSxVbj1TeW1ib2woKSxNbj1TeW1ib2woKTtsZXQgTG49MDtjb25zdCBIbj1jbi5kYXRhc2V0cy5pZDtjbGFzcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9ITEpe3RoaXNbWXNdPWU7dGhpc1t2c109dDt0aGlzW2tuXT1pO3RoaXNbR25dPW51bGw7dGhpc1ttbl09W107dGhpc1tnbl09YCR7dH0ke0xuKyt9YDt0aGlzW3dzXT1udWxsfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiEwfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITF9Y3JlYXRlTm9kZXMoZSl7bGV0IHQ9dGhpcyxpPW51bGw7Zm9yKGNvbnN0e25hbWU6YSxpbmRleDpyfW9mIGUpe2ZvcihsZXQgZT0wLHM9aXNGaW5pdGUocik/cjowO2U8PXM7ZSsrKXtjb25zdCBlPXRbWXNdPT09SG4/LTE6dFtZc107aT1uZXcgWG1sT2JqZWN0KGUsYSk7dFtWcl0oaSl9dD1pfXJldHVybiBpfVtLc10oZSl7aWYoIXRoaXNba25dfHwhdGhpc1txc10oZSkpcmV0dXJuITE7Y29uc3QgdD1lW3ZzXSxpPXRoaXNbdF07aWYoIShpIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09aSYmdGhpc1tac10oaSk7dGhpc1t0XT1lO3RoaXNbVnJdKGUpO3JldHVybiEwfWlmKGkucHVzaChlKSl7dGhpc1tWcl0oZSk7cmV0dXJuITB9bGV0IGE9IiI7dGhpcy5pZD9hPWAgKGlkOiAke3RoaXMuaWR9KWA6dGhpcy5uYW1lJiYoYT1gIChuYW1lOiAke3RoaXMubmFtZX0gJHt0aGlzLmgudmFsdWV9KWApO3dhcm4oYFhGQSAtIG5vZGUgIiR7dGhpc1t2c119IiR7YX0gaGFzIGFscmVhZHkgZW5vdWdoICIke3R9IiFgKTtyZXR1cm4hMX1bcXNdKGUpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KGVbdnNdKSYmZVtZc109PT10aGlzW1lzXX1beHNdKCl7cmV0dXJuITF9W1hyXSgpe3JldHVybiExfVtrc10oKXtyZXR1cm4hMX1bUnNdKCl7cmV0dXJuITF9W2pzXSgpe3RoaXMucGFyYSYmdGhpc1t5c10oKVtzc10ucGFyYVN0YWNrLnBvcCgpfVtYc10oKXt0aGlzW3lzXSgpW3NzXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVskc10oZSl7dGhpcy5pZCYmdGhpc1tZc109PT1jbi50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1beXNdKCl7cmV0dXJuIHRoaXNbd3NdLnRlbXBsYXRlfVtVc10oKXtyZXR1cm4hMX1bTXNdKCl7cmV0dXJuITF9W1ZyXShlKXtlW0duXT10aGlzO3RoaXNbbW5dLnB1c2goZSk7IWVbd3NdJiZ0aGlzW3dzXSYmKGVbd3NdPXRoaXNbd3NdKX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1ttbl0uaW5kZXhPZihlKTt0aGlzW21uXS5zcGxpY2UodCwxKX1bYnNdKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoInZhbHVlIil9W2VuXShlKXt9W09zXShlKXt9W25zXSgpe31benJdKGUpe2RlbGV0ZSB0aGlzW2tuXTtpZih0aGlzW0FzXSl7ZS5jbGVhbih0aGlzW0FzXSk7ZGVsZXRlIHRoaXNbQXNdfX1bRnNdKGUpe3JldHVybiB0aGlzW21uXS5pbmRleE9mKGUpfVtTc10oZSx0KXt0W0duXT10aGlzO3RoaXNbbW5dLnNwbGljZShlLDAsdCk7IXRbd3NdJiZ0aGlzW3dzXSYmKHRbd3NdPXRoaXNbd3NdKX1bTHNdKCl7cmV0dXJuIXRoaXMubmFtZX1bSnNdKCl7cmV0dXJuIiJ9W2FuXSgpe3JldHVybiAwPT09dGhpc1ttbl0ubGVuZ3RoP3RoaXNbaXNdOnRoaXNbbW5dLm1hcCgoZT0+ZVthbl0oKSkpLmpvaW4oIiIpfWdldFtwbl0oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMscG4sZS5fYXR0cmlidXRlcyl9W0dzXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFttc10oKX1yZXR1cm4hMX1bbXNdKCl7cmV0dXJuIHRoaXNbR25dfVtwc10oKXtyZXR1cm4gdGhpc1ttc10oKX1bdXNdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW21uXX1bcnNdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbaXNdJiYoZS4kY29udGVudD10aGlzW2lzXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtudWxsIT09aSYmKGkgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1pW3JzXSgpOmkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9pLmlzRW1wdHkoKXx8KGVbdF09aS5kdW1wKCkpOmVbdF09aSl9cmV0dXJuIGV9W29uXSgpe3JldHVybiBudWxsfVtzbl0oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW2RzXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbdXNdKCkpeWllbGQgZX0qW0RuXShlLHQpe2Zvcihjb25zdCBpIG9mIHRoaXNbZHNdKCkpaWYoIWV8fHQ9PT1lLmhhcyhpW3ZzXSkpe2NvbnN0IGU9dGhpc1tjc10oKSx0PWlbc25dKGUpO3Quc3VjY2Vzc3x8KHRoaXNbc3NdLmZhaWxpbmdOb2RlPWkpO3lpZWxkIHR9fVtvc10oKXtyZXR1cm4gbnVsbH1bWnJdKGUsdCl7dGhpc1tzc10uY2hpbGRyZW4ucHVzaChlKX1bY3NdKCl7fVtfcl0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tzc10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbY3NdKCksdD10aGlzW3NzXS5mYWlsaW5nTm9kZVtzbl0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbWnJdKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW3NzXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbc3NdLmdlbmVyYXRvcj10aGlzW0RuXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW3NzXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbWnJdKHQuaHRtbCx0LmJib3gpfXRoaXNbc3NdLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVtBbl0oZSl7dGhpc1tVbl09bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W1NuXShlKXtjb25zdCB0PXRoaXNbcG5dLGk9dGhpc1tVbl07cmV0dXJuWy4uLmVdLmZpbHRlcigoZT0+dC5oYXMoZSkmJiFpLmhhcyhlKSkpfVtfc10oZSx0PW5ldyBTZXQpe2Zvcihjb25zdCBpIG9mIHRoaXNbbW5dKWlbeG5dKGUsdCl9W3huXShlLHQpe2NvbnN0IGk9dGhpc1tGbl0oZSx0KTtpP3RoaXNbZG5dKGksZSx0KTp0aGlzW19zXShlLHQpfVtGbl0oZSx0KXtjb25zdHt1c2U6aSx1c2VocmVmOmF9PXRoaXM7aWYoIWkmJiFhKXJldHVybiBudWxsO2xldCByPW51bGwscz1udWxsLG49bnVsbCxvPWk7aWYoYSl7bz1hO2Euc3RhcnRzV2l0aCgiI3NvbSgiKSYmYS5lbmRzV2l0aCgiKSIpP3M9YS5zbGljZSg1LC0xKTphLnN0YXJ0c1dpdGgoIi4jc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDYsLTEpOmEuc3RhcnRzV2l0aCgiIyIpP249YS5zbGljZSgxKTphLnN0YXJ0c1dpdGgoIi4jIikmJihuPWEuc2xpY2UoMikpfWVsc2UgaS5zdGFydHNXaXRoKCIjIik/bj1pLnNsaWNlKDEpOnM9aTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYobilyPWUuZ2V0KG4pO2Vsc2V7cj1zZWFyY2hOb2RlKGUuZ2V0KFZzKSx0aGlzLHMsITAsITEpO3ImJihyPXJbMF0pfWlmKCFyKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7b30uYCk7cmV0dXJuIG51bGx9aWYoclt2c10hPT10aGlzW3ZzXSl7d2FybihgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtyW3ZzXX0gIT09ICR7dGhpc1t2c119LmApO3JldHVybiBudWxsfWlmKHQuaGFzKHIpKXt3YXJuKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChyKTtjb25zdCBnPXJbRm5dKGUsdCk7ZyYmcltkbl0oZyxlLHQpO3JbX3NdKGUsdCk7dC5kZWxldGUocik7cmV0dXJuIHJ9W2RuXShlLHQsaSl7aWYoaS5oYXMoZSkpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tpc10mJmVbaXNdJiYodGhpc1tpc109ZVtpc10pO25ldyBTZXQoaSkuYWRkKGUpO2Zvcihjb25zdCB0IG9mIHRoaXNbU25dKGVbVW5dKSl7dGhpc1t0XT1lW3RdO3RoaXNbVW5dJiZ0aGlzW1VuXS5hZGQodCl9Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbcG5dLmhhcyhhKSljb250aW51ZTtjb25zdCByPXRoaXNbYV0scz1lW2FdO2lmKHIgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSl7Zm9yKGNvbnN0IGUgb2Ygclttbl0pZVt4bl0odCxpKTtmb3IobGV0IGE9clttbl0ubGVuZ3RoLG49c1ttbl0ubGVuZ3RoO2E8bjthKyspe2NvbnN0IHM9ZVttbl1bYV1bZXNdKCk7aWYoIXIucHVzaChzKSlicmVhaztzW0duXT10aGlzO3RoaXNbbW5dLnB1c2gocyk7c1t4bl0odCxpKX19ZWxzZSBpZihudWxsPT09cil7aWYobnVsbCE9PXMpe2NvbnN0IGU9c1tlc10oKTtlW0duXT10aGlzO3RoaXNbYV09ZTt0aGlzW21uXS5wdXNoKGUpO2VbeG5dKHQsaSl9fWVsc2V7cltfc10odCxpKTtzJiZyW2RuXShzLHQsaSl9fX1zdGF0aWNbeW5dKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbeW5dKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W2VzXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbZ25dPWAke2VbdnNdfSR7TG4rK31gO2VbbW5dPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW3BuXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W3luXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBpPXRoaXNbdF07ZVt0XT1pIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGlbUm5dKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbbW5dKXtjb25zdCBpPXRbdnNdLGE9dFtlc10oKTtlW21uXS5wdXNoKGEpO2FbR25dPWU7bnVsbD09PWVbaV0/ZVtpXT1hOmVbaV1bbW5dLnB1c2goYSl9cmV0dXJuIGV9W3VzXShlPW51bGwpe3JldHVybiBlP3RoaXNbbW5dLmZpbHRlcigodD0+dFt2c109PT1lKSk6dGhpc1ttbl19W0NzXShlKXtyZXR1cm4gdGhpc1tlXX1baHNdKGUsdCxpPSEwKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzW2xzXShlLHQsaSkpfSpbbHNdKGUsdCxpPSEwKXtpZigicGFyZW50IiE9PWUpe2Zvcihjb25zdCBpIG9mIHRoaXNbbW5dKXtpW3ZzXT09PWUmJih5aWVsZCBpKTtpLm5hbWU9PT1lJiYoeWllbGQgaSk7KHR8fGlbTHNdKCkpJiYoeWllbGQqaVtsc10oZSx0LCExKSl9aSYmdGhpc1twbl0uaGFzKGUpJiYoeWllbGQgbmV3IFhGQUF0dHJpYnV0ZSh0aGlzLGUsdGhpc1tlXSkpfWVsc2UgeWllbGQgdGhpc1tHbl19fWNsYXNzIFhGQU9iamVjdEFycmF5e2NvbnN0cnVjdG9yKGU9MS8wKXt0aGlzW1JuXT1lO3RoaXNbbW5dPVtdfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiExfWdldCBpc1hGQU9iamVjdEFycmF5KCl7cmV0dXJuITB9cHVzaChlKXtpZih0aGlzW21uXS5sZW5ndGg8PXRoaXNbUm5dKXt0aGlzW21uXS5wdXNoKGUpO3JldHVybiEwfXdhcm4oYFhGQSAtIG5vZGUgIiR7ZVt2c119IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbUm5dfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbbW5dLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW21uXS5sZW5ndGg/dGhpc1ttbl1bMF1bcnNdKCk6dGhpc1ttbl0ubWFwKChlPT5lW3JzXSgpKSl9W2VzXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbUm5dKTtlW21uXT10aGlzW21uXS5tYXAoKGU9PmVbZXNdKCkpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1ttbl19Y2xlYXIoKXt0aGlzW21uXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzW0duXT1lO3RoaXNbdnNdPXQ7dGhpc1tpc109aTt0aGlzW3RzXT0hMTt0aGlzW2duXT0iYXR0cmlidXRlIitMbisrfVttc10oKXtyZXR1cm4gdGhpc1tHbl19W05zXSgpe3JldHVybiEwfVtCc10oKXtyZXR1cm4gdGhpc1tpc10udHJpbSgpfVtlbl0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2lzXT1lLnRvU3RyaW5nKCl9W2FuXSgpe3JldHVybiB0aGlzW2lzXX1bR3NdKGUpe3JldHVybiB0aGlzW0duXT09PWV8fHRoaXNbR25dW0dzXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxpPXt9KXtzdXBlcihlLHQpO3RoaXNbaXNdPSIiO3RoaXNbd25dPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW2ZuXT1lO2Zvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMoaSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxhKSk7aWYoaS5oYXNPd25Qcm9wZXJ0eShUcykpe2NvbnN0IGU9aVtUc10ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1t3bl09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1t3bl09ITApKX19dGhpc1t0c109ITF9W25uXShlKXtjb25zdCB0PXRoaXNbdnNdO2lmKCIjdGV4dCI9PT10KXtlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tpc10pKTtyZXR1cm59Y29uc3QgaT11dGY4U3RyaW5nVG9TdHJpbmcodCksYT10aGlzW1lzXT09PUhuPyJ4ZmE6IjoiIjtlLnB1c2goYDwke2F9JHtpfWApO2Zvcihjb25zdFt0LGldb2YgdGhpc1tmbl0uZW50cmllcygpKXtjb25zdCBhPXV0ZjhTdHJpbmdUb1N0cmluZyh0KTtlLnB1c2goYCAke2F9PSIke2VuY29kZVRvWG1sU3RyaW5nKGlbaXNdKX0iYCl9bnVsbCE9PXRoaXNbd25dJiYodGhpc1t3bl0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbaXNdfHwwIT09dGhpc1ttbl0ubGVuZ3RoKXtlLnB1c2goIj4iKTtpZih0aGlzW2lzXSkic3RyaW5nIj09dHlwZW9mIHRoaXNbaXNdP2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2lzXSkpOnRoaXNbaXNdW25uXShlKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbbW5dKXRbbm5dKGUpO2UucHVzaChgPC8ke2F9JHtpfT5gKX1lbHNlIGUucHVzaCgiLz4iKX1bS3NdKGUpe2lmKHRoaXNbaXNdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tZc10sIiN0ZXh0Iik7dGhpc1tWcl0oZSk7ZVtpc109dGhpc1tpc107dGhpc1tpc109IiJ9dGhpc1tWcl0oZSk7cmV0dXJuITB9W09zXShlKXt0aGlzW2lzXSs9ZX1bbnNdKCl7aWYodGhpc1tpc10mJnRoaXNbbW5dLmxlbmd0aD4wKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tZc10sIiN0ZXh0Iik7dGhpc1tWcl0oZSk7ZVtpc109dGhpc1tpc107ZGVsZXRlIHRoaXNbaXNdfX1bc25dKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbdnNdP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiI3RleHQiLHZhbHVlOnRoaXNbaXNdfSk6SFRNTFJlc3VsdC5FTVBUWX1bdXNdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1ttbl0uZmlsdGVyKCh0PT50W3ZzXT09PWUpKTp0aGlzW21uXX1bSXNdKCl7cmV0dXJuIHRoaXNbZm5dfVtDc10oZSl7Y29uc3QgdD10aGlzW2ZuXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW3VzXShlKX0qW2xzXShlLHQpe2NvbnN0IGk9dGhpc1tmbl0uZ2V0KGUpO2kmJih5aWVsZCBpKTtmb3IoY29uc3QgaSBvZiB0aGlzW21uXSl7aVt2c109PT1lJiYoeWllbGQgaSk7dCYmKHlpZWxkKmlbbHNdKGUsdCkpfX0qW2dzXShlLHQpe2NvbnN0IGk9dGhpc1tmbl0uZ2V0KGUpOyFpfHx0JiZpW3RzXXx8KHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbbW5dKXlpZWxkKmlbZ3NdKGUsdCl9KltFc10oZSx0LGkpe2Zvcihjb25zdCBhIG9mIHRoaXNbbW5dKXthW3ZzXSE9PWV8fGkmJmFbdHNdfHwoeWllbGQgYSk7dCYmKHlpZWxkKmFbRXNdKGUsdCxpKSl9fVtOc10oKXtyZXR1cm4gbnVsbD09PXRoaXNbd25dPzA9PT10aGlzW21uXS5sZW5ndGh8fHRoaXNbbW5dWzBdW1lzXT09PWNuLnhodG1sLmlkOnRoaXNbd25dfVtCc10oKXtyZXR1cm4gbnVsbD09PXRoaXNbd25dPzA9PT10aGlzW21uXS5sZW5ndGg/dGhpc1tpc10udHJpbSgpOnRoaXNbbW5dWzBdW1lzXT09PWNuLnhodG1sLmlkP3RoaXNbbW5dWzBdW2FuXSgpLnRyaW0oKTpudWxsOnRoaXNbaXNdLnRyaW0oKX1bZW5dKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tpc109ZS50b1N0cmluZygpfVtyc10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW1lzXSk7dGhpc1tpc10mJih0LiRjb250ZW50PXRoaXNbaXNdKTt0LiRuYW1lPXRoaXNbdnNdO3QuY2hpbGRyZW49W107Zm9yKGNvbnN0IGkgb2YgdGhpc1ttbl0pdC5jaGlsZHJlbi5wdXNoKGlbcnNdKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxpXW9mIHRoaXNbZm5dKXQuYXR0cmlidXRlc1tlXT1pW2lzXTtyZXR1cm4gdH19Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tpc109IiJ9W09zXShlKXt0aGlzW2lzXSs9ZX1bbnNdKCl7fX1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcihlLHQpO3RoaXNbTm5dPWl9W25zXSgpe3RoaXNbaXNdPWdldEtleXdvcmQoe2RhdGE6dGhpc1tpc10sZGVmYXVsdFZhbHVlOnRoaXNbTm5dWzBdLHZhbGlkYXRlOmU9PnRoaXNbTm5dLmluY2x1ZGVzKGUpfSl9W3pyXShlKXtzdXBlclt6cl0oZSk7ZGVsZXRlIHRoaXNbTm5dfX1jbGFzcyBTdHJpbmdPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e1tuc10oKXt0aGlzW2lzXT10aGlzW2lzXS50cmltKCl9fWNsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3N1cGVyKGUsdCk7dGhpc1tibl09aTt0aGlzW01uXT1hfVtuc10oKXt0aGlzW2lzXT1nZXRJbnRlZ2VyKHtkYXRhOnRoaXNbaXNdLGRlZmF1bHRWYWx1ZTp0aGlzW2JuXSx2YWxpZGF0ZTp0aGlzW01uXX0pfVt6cl0oZSl7c3VwZXJbenJdKGUpO2RlbGV0ZSB0aGlzW2JuXTtkZWxldGUgdGhpc1tNbl19fWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgSm49e2FuY2hvclR5cGUoZSx0KXtjb25zdCBpPWVbcHNdKCk7aWYoaSYmKCFpLmxheW91dHx8InBvc2l0aW9uIj09PWkubGF5b3V0KSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3N3aXRjaChlLmFuY2hvclR5cGUpe2Nhc2UiYm90dG9tQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLCAtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC0xMDAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkiO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLDApIjticmVhaztjYXNlInRvcFJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwwKSJ9fX0sZGltZW5zaW9ucyhlLHQpe2NvbnN0IGk9ZVtwc10oKTtsZXQgYT1lLnc7Y29uc3Qgcj1lLmg7aWYoaS5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1pW3NzXSxyPWUuY29sU3BhbjtsZXQgcztpZigtMT09PXIpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK3IpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChhPWUudz1zKX10LndpZHRoPSIiIT09YT9tZWFzdXJlVG9TdHJpbmcoYSk6ImF1dG8iO3QuaGVpZ2h0PSIiIT09cj9tZWFzdXJlVG9TdHJpbmcocik6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGk9ZVtwc10oKTtpZighaT8ubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVt2c10pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW29uXSgpLm1hcmdpbil9fTtmdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbcHNdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fWZ1bmN0aW9uIGxheW91dFRleHQoZSx0LGksYSxyLHMpe2NvbnN0IG49bmV3IFRleHRNZWFzdXJlKHQsaSxhLHIpOyJzdHJpbmciPT10eXBlb2YgZT9uLmFkZFN0cmluZyhlKTplW1dzXShuKTtyZXR1cm4gbi5jb21wdXRlKHMpfWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgaT1udWxsLGE9bnVsbCxyPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IHM9MCxuPTA7aWYoZS5tYXJnaW4pe3M9ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7bj1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgbz1udWxsLGc9bnVsbDtpZihlLnBhcmEpe2c9T2JqZWN0LmNyZWF0ZShudWxsKTtvPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtnLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7Zy5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2cubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7Zy5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgYz1lLmZvbnQ7aWYoIWMpe2NvbnN0IHQ9ZVt5c10oKTtsZXQgaT1lW21zXSgpO2Zvcig7aSYmaSE9PXQ7KXtpZihpLmZvbnQpe2M9aS5mb250O2JyZWFrfWk9aVttc10oKX19Y29uc3QgQz0oZS53fHx0LndpZHRoKS1zLGg9ZVt3c10uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbaXNdJiYidGV4dC9odG1sIj09PWUudmFsdWUuZXhEYXRhLmNvbnRlbnRUeXBlKXtjb25zdCB0PWxheW91dFRleHQoZS52YWx1ZS5leERhdGFbaXNdLGMsZyxvLGgsQyk7YT10LndpZHRoO2k9dC5oZWlnaHQ7cj10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW2FuXSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGMsZyxvLGgsQyk7YT1lLndpZHRoO2k9ZS5oZWlnaHQ7cj1lLmlzQnJva2VufX1udWxsPT09YXx8ZS53fHwoYSs9cyk7bnVsbD09PWl8fGUuaHx8KGkrPW4pfXJldHVybnt3OmEsaDppLGlzQnJva2VuOnJ9fWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxpKXtsZXQgYTtpZigiIiE9PWUudyYmIiIhPT1lLmgpYT1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFpKXJldHVybiBudWxsO2xldCByPWUudztpZigiIj09PXIpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtwc10oKTtyPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lnc/MDplLm1pbld9ZWxzZSByPU1hdGgubWluKGUubWF4VyxpLndpZHRoKTt0LmF0dHJpYnV0ZXMuc3R5bGUud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpfWxldCBzPWUuaDtpZigiIj09PXMpe2lmKDA9PT1lLm1heEgpe2NvbnN0IHQ9ZVtwc10oKTtzPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSBzPU1hdGgubWluKGUubWF4SCxpLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcocyl9YT1bZS54LGUueSxyLHNdfXJldHVybiBhfWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3BzXSgpO2lmKHQubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IGk9dFtzc10sYT1lLmNvbFNwYW47bGV0IHI7cj0tMT09PWE/aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApOmkuY29sdW1uV2lkdGhzLnNsaWNlKGkuY3VycmVudENvbHVtbixpLmN1cnJlbnRDb2x1bW4rYSkucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTtpc05hTihyKXx8KGUudz1yKX10LmxheW91dCYmInBvc2l0aW9uIiE9PXQubGF5b3V0JiYoZS54PWUueT0wKTsidGFibGUiPT09ZS5sYXlvdXQmJiIiPT09ZS53JiZBcnJheS5pc0FycmF5KGUuY29sdW1uV2lkdGhzKSYmKGUudz1lLmNvbHVtbldpZHRocy5yZWR1Y2UoKChlLHQpPT5lK3QpLDApKX1mdW5jdGlvbiBsYXlvdXRDbGFzcyhlKXtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmRlZmF1bHQ6cmV0dXJuInhmYVBvc2l0aW9uIjtjYXNlImxyLXRiIjpyZXR1cm4ieGZhTHJUYiI7Y2FzZSJybC1yb3ciOnJldHVybiJ4ZmFSbFJvdyI7Y2FzZSJybC10YiI6cmV0dXJuInhmYVJsVGIiO2Nhc2Uicm93IjpyZXR1cm4ieGZhUm93IjtjYXNlInRhYmxlIjpyZXR1cm4ieGZhVGFibGUiO2Nhc2UidGIiOnJldHVybiJ4ZmFUYiJ9fWZ1bmN0aW9uIHRvU3R5bGUoZSwuLi50KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD1lW2FdO2lmKG51bGwhPT10KWlmKEpuLmhhc093blByb3BlcnR5KGEpKUpuW2FdKGUsaSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRbb25dKCk7ZT9PYmplY3QuYXNzaWduKGksZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke2F9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIGl9ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6aX09dCx7c3R5bGU6YX09aSxyPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTtpLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOmksaW5zZXRzOnN9PWUuYm9yZGVyW3NzXTtsZXQgbixvLGc9c1swXSxjPXNbM107Y29uc3QgQz1zWzBdK3NbMl0saD1zWzFdK3NbM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6Zy09aVswXS8yO2MtPWlbM10vMjtuPWBjYWxjKDEwMCUgKyAkeyhpWzFdK2lbM10pLzItaH1weClgO289YGNhbGMoMTAwJSArICR7KGlbMF0raVsyXSkvMi1DfXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpnLT1pWzBdO2MtPWlbM107bj1gY2FsYygxMDAlICsgJHtpWzFdK2lbM10taH1weClgO289YGNhbGMoMTAwJSArICR7aVswXStpWzJdLUN9cHgpYDticmVhaztjYXNlInJpZ2h0IjpuPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIjtvPUM/YGNhbGMoMTAwJSAtICR7Q31weClgOiIxMDAlIn1jb25zdCBsPVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZsLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IFE9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6bCxzdHlsZTp7dG9wOmAke2d9cHhgLGxlZnQ6YCR7Y31weGAsd2lkdGg6bixoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09YVtlXSl7US5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19ci5jaGlsZHJlbi5wdXNoKFEsdCl9ZWxzZSByLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09YVtlXSl7ci5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1hLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgYS5wb3NpdGlvbjtpZihhLmFsaWduU2VsZil7ci5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1hLmFsaWduU2VsZjtkZWxldGUgYS5hbGlnblNlbGZ9cmV0dXJuIHJ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgaT0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxhPWdldE1lYXN1cmVtZW50KGVbaV0sIjBweCIpO2VbaV09YS10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3lzXSgpW3NzXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsaSl7aWYoaS5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHRoPSJhdXRvIil9Y29uc3QgYT1nZXRDdXJyZW50UGFyYShlKTtpZihhKXtjb25zdCBlPWkuYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2goYS52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1hW29uXSgpO2Zvcihjb25zdFtpLGFdb2YgT2JqZWN0LmVudHJpZXModCkpaSBpbiBlfHwoZVtpXT1hKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LGksYSl7aWYoIWkpe2RlbGV0ZSBhLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IHI9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7YS5mb250RmFtaWx5PWAiJHtyfSJgO2NvbnN0IHM9aS5maW5kKHIpO2lmKHMpe2NvbnN0e2ZvbnRGYW1pbHk6aX09cy5yZWd1bGFyLmNzc0ZvbnRJbmZvO2khPT1yJiYoYS5mb250RmFtaWx5PWAiJHtpfSJgKTtjb25zdCBuPWdldEN1cnJlbnRQYXJhKHQpO2lmKG4mJiIiIT09bi5saW5lSGVpZ2h0KXJldHVybjtpZihhLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLHMpO28mJihhLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtzc10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbc3NdLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtzc10uY2hpbGRyZW59O2lmKGVbc3NdLmZhaWxpbmdOb2RlKXtjb25zdCBpPWVbc3NdLmZhaWxpbmdOb2RlW29zXSgpO2kmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbaV0pKTp0LmNoaWxkcmVuLnB1c2goaSkpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGkpe2NvbnN0IGE9ZVtzc10scj1hLmF2YWlsYWJsZVNwYWNlLFtzLG4sbyxnXT1pO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6YS53aWR0aD1NYXRoLm1heChhLndpZHRoLHMrbyk7YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsbitnKTthLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWEubGluZXx8MT09PWEuYXR0ZW1wdCl7YS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7YS5jaGlsZHJlbi5wdXNoKGEubGluZSk7YS5udW1iZXJJbkxpbmU9MH1hLm51bWJlckluTGluZSs9MTthLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09YS5hdHRlbXB0KXthLmN1cnJlbnRXaWR0aCs9bzthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxhLnByZXZIZWlnaHQrZyl9ZWxzZXthLmN1cnJlbnRXaWR0aD1vO2EucHJldkhlaWdodD1hLmhlaWdodDthLmhlaWdodCs9ZzthLmF0dGVtcHQ9MH1hLndpZHRoPU1hdGgubWF4KGEud2lkdGgsYS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2EuY2hpbGRyZW4ucHVzaCh0KTthLndpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGcpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKGEuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBhLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjphLndpZHRoPU1hdGgubWluKHIud2lkdGgsTWF0aC5tYXgoYS53aWR0aCxvKSk7YS5oZWlnaHQrPWc7YS5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbc3NdLmF2YWlsYWJsZVNwYWNlLGk9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxhPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbc3NdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtYS1lW3NzXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWktZVtzc10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtYSxoZWlnaHQ6dC5oZWlnaHQtaS1lW3NzXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbc3NdLmNvbHVtbldpZHRocy5zbGljZShlW3NzXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtYX07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtYSxoZWlnaHQ6dC5oZWlnaHQtaS1lW3NzXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIGNoZWNrRGltZW5zaW9ucyhlLHQpe2lmKG51bGw9PT1lW3lzXSgpW3NzXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGk9ZVtwc10oKSxhPWlbc3NdPy5hdHRlbXB0fHwwLFsscixzLG5dPWZ1bmN0aW9uIGdldFRyYW5zZm9ybWVkQkJveChlKXtsZXQgdCxpLGE9IiI9PT1lLnc/TmFOOmUudyxyPSIiPT09ZS5oP05hTjplLmgsW3Msbl09WzAsMF07c3dpdGNoKGUuYW5jaG9yVHlwZXx8IiIpe2Nhc2UiYm90dG9tQ2VudGVyIjpbcyxuXT1bYS8yLHJdO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6W3Msbl09WzAscl07YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6W3Msbl09W2Escl07YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOltzLG5dPVthLzIsci8yXTticmVhaztjYXNlIm1pZGRsZUxlZnQiOltzLG5dPVswLHIvMl07YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6W3Msbl09W2Esci8yXTticmVhaztjYXNlInRvcENlbnRlciI6W3Msbl09W2EvMiwwXTticmVhaztjYXNlInRvcFJpZ2h0IjpbcyxuXT1bYSwwXX1zd2l0Y2goZS5yb3RhdGV8fDApe2Nhc2UgMDpbdCxpXT1bLXMsLW5dO2JyZWFrO2Nhc2UgOTA6W3QsaV09Wy1uLHNdO1thLHJdPVtyLC1hXTticmVhaztjYXNlIDE4MDpbdCxpXT1bcyxuXTtbYSxyXT1bLWEsLXJdO2JyZWFrO2Nhc2UgMjcwOlt0LGldPVtuLC1zXTtbYSxyXT1bLXIsYV19cmV0dXJuW2UueCt0K01hdGgubWluKDAsYSksZS55K2krTWF0aC5taW4oMCxyKSxNYXRoLmFicyhhKSxNYXRoLmFicyhyKV19KGUpO3N3aXRjaChpLmxheW91dCl7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6cmV0dXJuIDA9PT1hP2VbeXNdKClbc3NdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQobi10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1pW3NzXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbeXNdKClbc3NdLm5vTGF5b3V0RmFpbHVyZXx8ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCgiIj09PWUud3x8TWF0aC5yb3VuZChzLXQud2lkdGgpPD0yfHwhaVtNc10oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVt5c10oKVtzc10ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fGVbVXNdKCk/KCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW01zXSgpKSYmdC5oZWlnaHQ+MjpNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtjYXNlInBvc2l0aW9uIjppZihlW3lzXSgpW3NzXS5ub0xheW91dEZhaWx1cmUpcmV0dXJuITA7aWYoIiI9PT1lLmh8fE1hdGgucm91bmQobityLXQuaGVpZ2h0KTw9MilyZXR1cm4hMDtyZXR1cm4gbityPmVbeXNdKClbc3NdLmN1cnJlbnRDb250ZW50QXJlYS5oO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJuISFlW3lzXSgpW3NzXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8TWF0aC5yb3VuZChuLXQuaGVpZ2h0KTw9Mik7ZGVmYXVsdDpyZXR1cm4hMH19Y29uc3QgWW49Y24udGVtcGxhdGUuaWQsdm49Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixUbj0vXkgoXGQrKSQvLEtuPW5ldyBTZXQoWyJpbWFnZS9naWYiLCJpbWFnZS9qcGVnIiwiaW1hZ2UvanBnIiwiaW1hZ2UvcGpwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9hcG5nIiwiaW1hZ2UveC1wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LW1zLWJtcCIsImltYWdlL3RpZmYiLCJpbWFnZS90aWYiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSkscW49W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltRc10oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2VbVnJdKHQpO2UudmFsdWU9dH1lLnZhbHVlW2VuXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3VzXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbZHNdKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiJlcnJvciI9PT1lLnZhbGlkYXRlPy5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2VbdG5dPWVbbXNdKClbdG5dO3JldHVybn1pZihlW3RuXSlyZXR1cm47bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLnRyYXZlcnNhbFt1c10oKSlpZigibmV4dCI9PT1pLm9wZXJhdGlvbil7dD1pO2JyZWFrfWlmKCF0fHwhdC5yZWYpe2VbdG5dPWVbbXNdKClbdG5dO3JldHVybn1jb25zdCBpPWVbeXNdKCk7ZVt0bl09KytpW3RuXTtjb25zdCBhPWlbenNdKHQucmVmLGUpO2lmKCFhKXJldHVybjtlPWFbMF19fWZ1bmN0aW9uIGFwcGx5QXNzaXN0KGUsdCl7Y29uc3QgaT1lLmFzc2lzdDtpZihpKXtjb25zdCBlPWlbc25dKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3QgYT1pLnJvbGUubWF0Y2goVG4pO2lmKGEpe2NvbnN0IGU9ImhlYWRpbmciLGk9YVsxXTt0LnJvbGU9ZTt0WyJhcmlhLWxldmVsIl09aX19aWYoInRhYmxlIj09PWUubGF5b3V0KXQucm9sZT0idGFibGUiO2Vsc2UgaWYoInJvdyI9PT1lLmxheW91dCl0LnJvbGU9InJvdyI7ZWxzZXtjb25zdCBpPWVbbXNdKCk7InJvdyI9PT1pLmxheW91dCYmKHQucm9sZT0iVEgiPT09aS5hc3Npc3Q/LnJvbGU/ImNvbHVtbmhlYWRlciI6ImNlbGwiKX19ZnVuY3Rpb24gYXJpYUxhYmVsKGUpe2lmKCFlLmFzc2lzdClyZXR1cm4gbnVsbDtjb25zdCB0PWUuYXNzaXN0O3JldHVybiB0LnNwZWFrJiYiIiE9PXQuc3BlYWtbaXNdP3Quc3BlYWtbaXNdOnQudG9vbFRpcD90LnRvb2xUaXBbaXNdOm51bGx9ZnVuY3Rpb24gdmFsdWVUb0h0bWwoZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVt5c10oKTtpZihudWxsPT09dFtzc10uZmlyc3RVbnNwbGl0dGFibGUpe3Rbc3NdLmZpcnN0VW5zcGxpdHRhYmxlPWU7dFtzc10ubm9MYXlvdXRGYWlsdXJlPSEwfX1mdW5jdGlvbiB1bnNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVt5c10oKTt0W3NzXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W3NzXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIGhhbmRsZUJyZWFrKGUpe2lmKGVbc3NdKXJldHVybiExO2Vbc3NdPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVt5c10oKTtsZXQgaT1udWxsO2lmKGUudGFyZ2V0KXtpPXRbenNdKGUudGFyZ2V0LGVbbXNdKCkpO2lmKCFpKXJldHVybiExO2k9aVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6YSxjdXJyZW50Q29udGVudEFyZWE6cn09dFtzc107aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7aSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoaT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3NzXS50YXJnZXQ9aXx8YTtyZXR1cm4hMH1pZihpJiZpIT09YSl7ZVtzc10udGFyZ2V0PWk7cmV0dXJuITB9cmV0dXJuITF9aSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoaT1udWxsKTtjb25zdCBzPWkmJmlbbXNdKCk7bGV0IG4sbz1zO2lmKGUuc3RhcnROZXcpaWYoaSl7Y29uc3QgZT1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHQ9ZS5pbmRleE9mKHIpLGE9ZS5pbmRleE9mKGkpOy0xIT09dCYmdDxhJiYobz1udWxsKTtuPWEtMX1lbHNlIG49YS5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpO2Vsc2V7aWYoIWl8fGk9PT1yKXJldHVybiExO249cy5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKGkpLTE7bz1zPT09YT9udWxsOnN9ZVtzc10udGFyZ2V0PW87ZVtzc10uaW5kZXg9bjtyZXR1cm4hMH1mdW5jdGlvbiBoYW5kbGVPdmVyZmxvdyhlLHQsaSl7Y29uc3QgYT1lW3lzXSgpLHI9YVtzc10ubm9MYXlvdXRGYWlsdXJlLHM9dFtwc107dFtwc109KCk9PmU7YVtzc10ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG49dFtzbl0oaSk7ZVtacl0obi5odG1sLG4uYmJveCk7YVtzc10ubm9MYXlvdXRGYWlsdXJlPXI7dFtwc109c31jbGFzcyBBcHBlYXJhbmNlRmlsdGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImFyYyIsITApO3RoaXMuY2lyY3VsYXI9Z2V0SW50ZWdlcih7ZGF0YTplLmNpcmN1bGFyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zdGFydEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3RhcnRBbmdsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMuc3dlZXBBbmdsZT1nZXRGbG9hdCh7ZGF0YTplLnN3ZWVwQW5nbGUsZGVmYXVsdFZhbHVlOjM2MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbDt0aGlzLmZpbGw9bnVsbH1bc25dKCl7Y29uc3QgZT10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSx0PWVbb25dKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtvbl0oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2xldCBhO2NvbnN0IHI9e3htbG5zOnZuLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpYT17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6dm4sY3g6IjUwJSIsY3k6IjUwJSIscng6IjUwJSIscnk6IjUwJSIsc3R5bGU6aX19O2Vsc2V7Y29uc3QgZT10aGlzLnN0YXJ0QW5nbGUqTWF0aC5QSS8xODAsdD10aGlzLnN3ZWVwQW5nbGUqTWF0aC5QSS8xODAscz10aGlzLnN3ZWVwQW5nbGU+MTgwPzE6MCxbbixvLGcsY109WzUwKigxK01hdGguY29zKGUpKSw1MCooMS1NYXRoLnNpbihlKSksNTAqKDErTWF0aC5jb3MoZSt0KSksNTAqKDEtTWF0aC5zaW4oZSt0KSldO2E9e25hbWU6InBhdGgiLGF0dHJpYnV0ZXM6e3htbG5zOnZuLGQ6YE0gJHtufSAke299IEEgNTAgNTAgMCAke3N9IDAgJHtnfSAke2N9YCx2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6aX19O09iamVjdC5hc3NpZ24ocix7dmlld0JveDoiMCAwIDEwMCAxMDAiLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSl9Y29uc3Qgcz17bmFtZToic3ZnIixjaGlsZHJlbjpbYV0sYXR0cmlidXRlczpyfTtpZihoYXNNYXJnaW4odGhpc1ttc10oKVttc10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltzXX0pO3MuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocyl9fWNsYXNzIEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImFyZWEiLCEwKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbZHNdKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W0xzXSgpe3JldHVybiEwfVtSc10oKXtyZXR1cm4hMH1bWnJdKGUsdCl7Y29uc3RbaSxhLHIsc109dDt0aGlzW3NzXS53aWR0aD1NYXRoLm1heCh0aGlzW3NzXS53aWR0aCxpK3IpO3RoaXNbc3NdLmhlaWdodD1NYXRoLm1heCh0aGlzW3NzXS5oZWlnaHQsYStzKTt0aGlzW3NzXS5jaGlsZHJlbi5wdXNoKGUpfVtjc10oKXtyZXR1cm4gdGhpc1tzc10uYXZhaWxhYmxlU3BhY2V9W3NuXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywicG9zaXRpb24iKSxpPXtzdHlsZTp0LGlkOnRoaXNbZ25dLGNsYXNzOlsieGZhQXJlYSJdfTtpc1ByaW50T25seSh0aGlzKSYmaS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihpLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBhPVtdO3RoaXNbc3NdPXtjaGlsZHJlbjphLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3Qgcj10aGlzW19yXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFyLnN1Y2Nlc3Mpe2lmKHIuaXNCcmVhaygpKXJldHVybiByO2RlbGV0ZSB0aGlzW3NzXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXNbc3NdLndpZHRoKTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpc1tzc10uaGVpZ2h0KTtjb25zdCBzPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjphfSxuPVt0aGlzLngsdGhpcy55LHRoaXNbc3NdLndpZHRoLHRoaXNbc3NdLmhlaWdodF07ZGVsZXRlIHRoaXNbc3NdO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MocyxuKX19Y2xhc3MgQXNzaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJhc3Npc3QiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucm9sZT1lLnJvbGV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNwZWFrPW51bGw7dGhpcy50b29sVGlwPW51bGx9W3NuXSgpe3JldHVybiB0aGlzLnRvb2xUaXA/Lltpc118fG51bGx9fWNsYXNzIEJhcmNvZGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPWdldFN0cmluZ09wdGlvbihlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPWdldFN0cmluZ09wdGlvbihlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD1nZXRJbnRlZ2VyKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz1nZXRSYXRpbyhlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPWdldEludGVnZXIoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT1nZXRTdHJpbmdPcHRpb24oZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89Z2V0UmF0aW8oZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImJpbmQiLCEwKTt0aGlzLm1hdGNoPWdldFN0cmluZ09wdGlvbihlLm1hdGNoLFsib25jZSIsImRhdGFSZWYiLCJnbG9iYWwiLCJub25lIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQmluZEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJiaW5kSXRlbXMiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmxhYmVsUmVmPWUubGFiZWxSZWZ8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnZhbHVlUmVmPWUudmFsdWVSZWZ8fCIifX1jbGFzcyBCb29rZW5kIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJib29rZW5kIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBCb29sZWFuRWxlbWVudCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJib29sZWFuIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbaXNdPyIxIjoiMCIpfX1jbGFzcyBCb3JkZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImJvcmRlciIsITApO3RoaXMuYnJlYWs9Z2V0U3RyaW5nT3B0aW9uKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsO3RoaXMubWFyZ2luPW51bGx9W1FzXSgpe2lmKCF0aGlzW3NzXSl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4uc2xpY2UoKTtpZihlLmxlbmd0aDw0KXtjb25zdCB0PWUuYXQoLTEpfHxuZXcgRWRnZSh7fSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWNvbnN0IHQ9ZS5tYXAoKGU9PmUudGhpY2tuZXNzKSksaT1bMCwwLDAsMF07aWYodGhpcy5tYXJnaW4pe2lbMF09dGhpcy5tYXJnaW4udG9wSW5zZXQ7aVsxXT10aGlzLm1hcmdpbi5yaWdodEluc2V0O2lbMl09dGhpcy5tYXJnaW4uYm90dG9tSW5zZXQ7aVszXT10aGlzLm1hcmdpbi5sZWZ0SW5zZXR9dGhpc1tzc109e3dpZHRoczp0LGluc2V0czppLGVkZ2VzOmV9fXJldHVybiB0aGlzW3NzXX1bb25dKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tRc10oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW29uXSgpO3QuY29sb3J8fD0iIzAwMDAwMCI7cmV0dXJuIHR9KSksaT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGksdGhpcy5tYXJnaW5bb25dKCkpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oaSx0aGlzLmZpbGxbb25dKCkpO2lmKHRoaXMuY29ybmVyLmNoaWxkcmVuLnNvbWUoKGU9PjAhPT1lLnJhZGl1cykpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcCgoZT0+ZVtvbl0oKSkpO2lmKDI9PT1lLmxlbmd0aHx8Mz09PWUubGVuZ3RoKXtjb25zdCB0PWUuYXQoLTEpO2ZvcihsZXQgaT1lLmxlbmd0aDtpPDQ7aSsrKWUucHVzaCh0KX1pLmJvcmRlclJhZGl1cz1lLm1hcCgoZT0+ZS5yYWRpdXMpKS5qb2luKCIgIil9c3dpdGNoKHRoaXMucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjpjYXNlImhpZGRlbiI6aS5ib3JkZXJTdHlsZT0iIjticmVhaztjYXNlImluYWN0aXZlIjppLmJvcmRlclN0eWxlPSJub25lIjticmVhaztkZWZhdWx0OmkuYm9yZGVyU3R5bGU9dC5tYXAoKGU9PmUuc3R5bGUpKS5qb2luKCIgIil9aS5ib3JkZXJXaWR0aD10Lm1hcCgoZT0+ZS53aWR0aCkpLmpvaW4oIiAiKTtpLmJvcmRlckNvbG9yPXQubWFwKChlPT5lLmNvbG9yKSkuam9pbigiICIpO3JldHVybiBpfX1jbGFzcyBCcmVhayBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiYnJlYWsiLCEwKTt0aGlzLmFmdGVyPWdldFN0cmluZ09wdGlvbihlLmFmdGVyLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5hZnRlclRhcmdldD1lLmFmdGVyVGFyZ2V0fHwiIjt0aGlzLmJlZm9yZT1nZXRTdHJpbmdPcHRpb24oZS5iZWZvcmUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmJlZm9yZVRhcmdldD1lLmJlZm9yZVRhcmdldHx8IiI7dGhpcy5ib29rZW5kTGVhZGVyPWUuYm9va2VuZExlYWRlcnx8IiI7dGhpcy5ib29rZW5kVHJhaWxlcj1lLmJvb2tlbmRUcmFpbGVyfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcmZsb3dMZWFkZXI9ZS5vdmVyZmxvd0xlYWRlcnx8IiI7dGhpcy5vdmVyZmxvd1RhcmdldD1lLm92ZXJmbG93VGFyZ2V0fHwiIjt0aGlzLm92ZXJmbG93VHJhaWxlcj1lLm92ZXJmbG93VHJhaWxlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQnJlYWtBZnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT1nZXRTdHJpbmdPcHRpb24oZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJicmVha0JlZm9yZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT1nZXRTdHJpbmdPcHRpb24oZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9W3NuXShlKXt0aGlzW3NzXT17fTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfX1jbGFzcyBCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImJ1dHRvbiIsITApO3RoaXMuaGlnaGxpZ2h0PWdldFN0cmluZ09wdGlvbihlLmhpZ2hsaWdodCxbImludmVydGVkIiwibm9uZSIsIm91dGxpbmUiLCJwdXNoIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3NuXShlKXtjb25zdCB0PXRoaXNbbXNdKClbbXNdKCksaT17bmFtZToiYnV0dG9uIixhdHRyaWJ1dGVzOntpZDp0aGlzW2duXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PXJlY292ZXJKc1VSTChlLnNjcmlwdFtpc10pO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9Zml4VVJMKHQudXJsKTthJiZpLmNoaWxkcmVuLnB1c2goe25hbWU6ImEiLGF0dHJpYnV0ZXM6e2lkOiJsaW5rIit0aGlzW2duXSxocmVmOmEsbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaSl9fWNsYXNzIENhbGN1bGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldFN0cmluZ09wdGlvbihlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY2FwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wbGFjZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUucGxhY2VtZW50LFsibGVmdCIsImJvdHRvbSIsImlubGluZSIsInJpZ2h0IiwidG9wIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZXNlcnZlPU1hdGguY2VpbChnZXRNZWFzdXJlbWVudChlLnJlc2VydmUpKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudmFsdWU9bnVsbH1bZW5dKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVtRc10oZSl7aWYoIXRoaXNbc3NdKXtsZXR7d2lkdGg6dCxoZWlnaHQ6aX09ZTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQ9dGhpcy5yZXNlcnZlPD0wP3Q6dGhpcy5yZXNlcnZlO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6aT10aGlzLnJlc2VydmU8PTA/aTp0aGlzLnJlc2VydmV9dGhpc1tzc109bGF5b3V0Tm9kZSh0aGlzLHt3aWR0aDp0LGhlaWdodDppfSl9cmV0dXJuIHRoaXNbc3NdfVtzbl0oZSl7aWYoIXRoaXMudmFsdWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpc1tYc10oKTtjb25zdCB0PXRoaXMudmFsdWVbc25dKGUpLmh0bWw7aWYoIXQpe3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgaT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDppfT10aGlzW1FzXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWl9fWNvbnN0IGE9W107InN0cmluZyI9PXR5cGVvZiB0P2EucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTphLnB1c2godCk7Y29uc3Qgcj10b1N0eWxlKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoci53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKHIuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKX1zZXRQYXJhKHRoaXMsbnVsbCx0KTt0aGlzW2pzXSgpO3RoaXMucmVzZXJ2ZT1pO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6cixjbGFzczpbInhmYUNhcHRpb24iXX0sY2hpbGRyZW46YX0pfX1jbGFzcyBDZXJ0aWZpY2F0ZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY2VydGlmaWNhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ2VydGlmaWNhdGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJjaGVja0J1dHRvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXJrPWdldFN0cmluZ09wdGlvbihlLm1hcmssWyJkZWZhdWx0IiwiY2hlY2siLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzcXVhcmUiLCJzdGFyIl0pO3RoaXMuc2hhcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2hhcGUsWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnNpemU9Z2V0TWVhc3VyZW1lbnQoZS5zaXplLCIxMHB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtzbl0oZSl7Y29uc3QgdD10b1N0eWxlKCJtYXJnaW4iKSxpPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9aTtsZXQgYSxyLHM7Y29uc3Qgbj10aGlzW21zXSgpW21zXSgpLG89bi5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJm4uaXRlbXMuY2hpbGRyZW5bMF1bc25dKCkuaHRtbHx8W10sZz17b246KHZvaWQgMCE9PW9bMF0/b1swXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09b1sxXT9vWzFdOiJvZmYiKS50b1N0cmluZygpfSxjPShuLnZhbHVlPy5bYW5dKCl8fCJvZmYiKT09PWcub258fHZvaWQgMCxDPW5bcHNdKCksaD1uW2duXTtsZXQgbDtpZihDIGluc3RhbmNlb2YgRXhjbEdyb3VwKXtzPUNbZ25dO2E9InJhZGlvIjtyPSJ4ZmFSYWRpbyI7bD1DW2FzXT8uW2duXXx8Q1tnbl19ZWxzZXthPSJjaGVja2JveCI7cj0ieGZhQ2hlY2tib3giO2w9blthc10/Lltnbl18fG5bZ25dfWNvbnN0IFE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOntjbGFzczpbcl0sc3R5bGU6dCxmaWVsZElkOmgsZGF0YUlkOmwsdHlwZTphLGNoZWNrZWQ6Yyx4ZmFPbjpnLm9uLHhmYU9mZjpnLm9mZiwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKG4pLCJhcmlhLXJlcXVpcmVkIjohMX19O3MmJihRLmF0dHJpYnV0ZXMubmFtZT1zKTtpZihpc1JlcXVpcmVkKG4pKXtRLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtRLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W1FdfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImNob2ljZUxpc3QiLCEwKTt0aGlzLmNvbW1pdE9uPWdldFN0cmluZ09wdGlvbihlLmNvbW1pdE9uLFsic2VsZWN0IiwiZXhpdCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3Blbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVuLFsidXNlckNvbnRyb2wiLCJhbHdheXMiLCJtdWx0aVNlbGVjdCIsIm9uRW50cnkiXSk7dGhpcy50ZXh0RW50cnk9Z2V0SW50ZWdlcih7ZGF0YTplLnRleHRFbnRyeSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc25dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxpPXRoaXNbbXNdKClbbXNdKCksYT17Zm9udFNpemU6YGNhbGMoJHtpLmZvbnQ/LnNpemV8fDEwfXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgfSxyPVtdO2lmKGkuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IGU9aS5pdGVtcztsZXQgdD0wLHM9MDtpZigyPT09ZS5jaGlsZHJlbi5sZW5ndGgpe3Q9ZS5jaGlsZHJlblswXS5zYXZlO3M9MS10fWNvbnN0IG49ZS5jaGlsZHJlblt0XVtzbl0oKS5odG1sLG89ZS5jaGlsZHJlbltzXVtzbl0oKS5odG1sO2xldCBnPSExO2NvbnN0IGM9aS52YWx1ZT8uW2FuXSgpfHwiIjtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6b1tlXXx8bltlXSxzdHlsZTphfSx2YWx1ZTpuW2VdfTtvW2VdPT09YyYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1nPSEwKTtyLnB1c2godCl9Z3x8ci5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3Qgcz17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmlbZ25dLGRhdGFJZDppW2FzXT8uW2duXXx8aVtnbl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX07aWYoaXNSZXF1aXJlZChpKSl7c1siYXJpYS1yZXF1aXJlZCJdPSEwO3MucmVxdWlyZWQ9ITB9Im11bHRpU2VsZWN0Ij09PXRoaXMub3BlbiYmKHMubXVsdGlwbGU9ITApO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjpyLGF0dHJpYnV0ZXM6c31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJjb2xvciIsITApO3RoaXMuY1NwYWNlPWdldFN0cmluZ09wdGlvbihlLmNTcGFjZSxbIlNSR0IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52YWx1ZT1lLnZhbHVlP2Z1bmN0aW9uIGdldENvbG9yKGUsdD1bMCwwLDBdKXtsZXRbaSxhLHJdPXQ7aWYoIWUpcmV0dXJue3I6aSxnOmEsYjpyfTtjb25zdCBzPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5NYXRoLm1pbihNYXRoLm1heCgwLHBhcnNlSW50KGUudHJpbSgpLDEwKSksMjU1KSkpLm1hcCgoZT0+aXNOYU4oZSk/MDplKSk7aWYocy5sZW5ndGg8MylyZXR1cm57cjppLGc6YSxiOnJ9O1tpLGEscl09cztyZXR1cm57cjppLGc6YSxiOnJ9fShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtic10oKXtyZXR1cm4hMX1bb25dKCl7cmV0dXJuIHRoaXMudmFsdWU/VXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImNvbWIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVtYmVyT2ZDZWxscz1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyT2ZDZWxscyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDb25uZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT1nZXRTdHJpbmdPcHRpb24oZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPWdldE1lYXN1cmVtZW50KGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9Z2V0TWVhc3VyZW1lbnQoZS53KTt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtzbl0oZSl7Y29uc3QgdD17bGVmdDptZWFzdXJlVG9TdHJpbmcodGhpcy54KSx0b3A6bWVhc3VyZVRvU3RyaW5nKHRoaXMueSksd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudyksaGVpZ2h0Om1lYXN1cmVUb1N0cmluZyh0aGlzLmgpfSxpPVsieGZhQ29udGVudGFyZWEiXTtpc1ByaW50T25seSh0aGlzKSYmaS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6aSxpZDp0aGlzW2duXX19KX19Y2xhc3MgQ29ybmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPWdldFN0cmluZ09wdGlvbihlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPWdldE1lYXN1cmVtZW50KGUucmFkaXVzKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bb25dKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtlLnJhZGl1cz1tZWFzdXJlVG9TdHJpbmcoInNxdWFyZSI9PT10aGlzLmpvaW4/MDp0aGlzLnJhZGl1cyk7cmV0dXJuIGV9fWNsYXNzIERhdGVFbGVtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuc10oKXtjb25zdCBlPXRoaXNbaXNdLnRyaW0oKTt0aGlzW2lzXT1lP25ldyBEYXRlKGUpOm51bGx9W3NuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tpc10/dGhpc1tpc10udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbnNdKCl7Y29uc3QgZT10aGlzW2lzXS50cmltKCk7dGhpc1tpc109ZT9uZXcgRGF0ZShlKTpudWxsfVtzbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbaXNdP3RoaXNbaXNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImRhdGVUaW1lRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5waWNrZXI9Z2V0U3RyaW5nT3B0aW9uKGUucGlja2VyLFsiaG9zdCIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtzbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxpPXRoaXNbbXNdKClbbXNdKCksYT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6aVtnbl0sZGF0YUlkOmlbYXNdPy5bZ25dfHxpW2duXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGkpKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJkZWNpbWFsIik7dGhpcy5mcmFjRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWREaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmxlYWREaWdpdHMsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuc10oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tpc10udHJpbSgpKTt0aGlzW2lzXT1pc05hTihlKT9udWxsOmV9W3NuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbaXNdP3RoaXNbaXNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEZWZhdWx0VWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImRlZmF1bHRVaSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIERlc2MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERpZ2VzdE1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImRpZ2VzdE1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJkcmF3IiwhMCk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtlbl0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NuXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7dGhpc1tYc10oKTtjb25zdCB0PXRoaXMudyxpPXRoaXMuaCx7dzphLGg6cixpc0Jyb2tlbjpzfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYoYSYmIiI9PT10aGlzLncpe2lmKHMmJnRoaXNbcHNdKClbTXNdKCkpe3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10aGlzLnc9YX1yJiYiIj09PXRoaXMuaCYmKHRoaXMuaD1yKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz10O3RoaXMuaD1pO3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IG49dG9TdHlsZSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLG4pO2lmKG4ubWFyZ2luKXtuLnBhZGRpbmc9bi5tYXJnaW47ZGVsZXRlIG4ubWFyZ2lufWNvbnN0IG89WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZvLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmby5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpuLGlkOnRoaXNbZ25dLGNsYXNzOm99O3RoaXMubmFtZSYmKGcueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOltdfTthcHBseUFzc2lzdCh0aGlzLGcpO2NvbnN0IEM9Y29tcHV0ZUJib3godGhpcyxjLGUpLGg9dGhpcy52YWx1ZT90aGlzLnZhbHVlW3NuXShlKS5odG1sOm51bGw7aWYobnVsbD09PWgpe3RoaXMudz10O3RoaXMuaD1pO3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsYyksQyl9Yy5jaGlsZHJlbi5wdXNoKGgpO3NldFBhcmEodGhpcyxuLGgpO3RoaXMudz10O3RoaXMuaD1pO3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsYyksQyl9fWNsYXNzIEVkZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVkZ2UiLCEwKTt0aGlzLmNhcD1nZXRTdHJpbmdPcHRpb24oZS5jYXAsWyJzcXVhcmUiLCJidXR0Iiwicm91bmQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtvbl0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO09iamVjdC5hc3NpZ24oZSx7bGluZWNhcDp0aGlzLmNhcCx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy50aGlja25lc3MpLGNvbG9yOnRoaXMuY29sb3I/dGhpcy5jb2xvcltvbl0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVuY29kaW5nIixbImFkYmUueDUwOS5yc2Ffc2hhMSIsImFkYmUucGtjczcuZGV0YWNoZWQiLCJhZGJlLnBrY3M3LnNoYTEiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY29kaW5ncyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZW5jb2RpbmdzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJlbmNyeXB0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1udWxsfX1jbGFzcyBFbmNyeXB0RGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVuY3J5cHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVuY3J5cHRpb25NZXRob2QiLFsiIiwiQUVTMjU2LUNCQyIsIlRSSVBMRURFUy1DQkMiLCJBRVMxMjgtQ0JDIiwiQUVTMTkyLUNCQyJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVuY3J5cHRpb25NZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV2ZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJldmVudCIsITApO3RoaXMuYWN0aXZpdHk9Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aXZpdHksWyJjbGljayIsImNoYW5nZSIsImRvY0Nsb3NlIiwiZG9jUmVhZHkiLCJlbnRlciIsImV4aXQiLCJmdWxsIiwiaW5kZXhDaGFuZ2UiLCJpbml0aWFsaXplIiwibW91c2VEb3duIiwibW91c2VFbnRlciIsIm1vdXNlRXhpdCIsIm1vdXNlVXAiLCJwb3N0RXhlY3V0ZSIsInBvc3RPcGVuIiwicG9zdFByaW50IiwicG9zdFNhdmUiLCJwb3N0U2lnbiIsInBvc3RTdWJtaXQiLCJwcmVFeGVjdXRlIiwicHJlT3BlbiIsInByZVByaW50IiwicHJlU2F2ZSIsInByZVNpZ24iLCJwcmVTdWJtaXQiLCJyZWFkeSIsInZhbGlkYXRpb25TdGF0ZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGlzdGVuPWdldFN0cmluZ09wdGlvbihlLmxpc3RlbixbInJlZk9ubHkiLCJyZWZBbmREZXNjZW5kZW50cyJdKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5lbmNyeXB0RGF0YT1udWxsO3RoaXMuZXhlY3V0ZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy5zaWduRGF0YT1udWxsO3RoaXMuc3VibWl0PW51bGx9fWNsYXNzIEV4RGF0YSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba3NdKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfVtLc10oZSl7aWYoInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZlW1lzXT09PWNuLnhodG1sLmlkKXt0aGlzW2lzXT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW2lzXT1lO3JldHVybiEwfXJldHVybiExfVtzbl0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW2lzXT90aGlzW2lzXVtzbl0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgRXhPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImV4T2JqZWN0IiwhMCk7dGhpcy5hcmNoaXZlPWUuYXJjaGl2ZXx8IiI7dGhpcy5jbGFzc0lkPWUuY2xhc3NJZHx8IiI7dGhpcy5jb2RlQmFzZT1lLmNvZGVCYXNlfHwiIjt0aGlzLmNvZGVUeXBlPWUuY29kZVR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImV4Y2xHcm91cCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtSc10oKXtyZXR1cm4hMH1bYnNdKCl7cmV0dXJuITB9W2VuXShlKXtmb3IoY29uc3QgdCBvZiB0aGlzLmZpZWxkLmNoaWxkcmVuKXtpZighdC52YWx1ZSl7Y29uc3QgZT1uZXcgVmFsdWUoe30pO3RbVnJdKGUpO3QudmFsdWU9ZX10LnZhbHVlW2VuXShlKX19W01zXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3NzXS5hdHRlbXB0JiZ0aGlzW3NzXS5udW1iZXJJbkxpbmU+MHx8dGhpc1ttc10oKVtNc10oKX1bVXNdKCl7Y29uc3QgZT10aGlzW3BzXSgpO2lmKCFlW1VzXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbc3NdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbc3NdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbc3NdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbc3NdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW3NzXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtvc10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtacl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bY3NdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtzbl0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10saT17aWQ6dGhpc1tnbl0sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGkuY2xhc3MpO3RoaXNbc3NdfHwodGhpc1tzc109T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3NzXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbVXNdKCk7YXx8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgcj1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbcHNdKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbc3NdLmNvbHVtbldpZHRocz1lO3RoaXNbc3NdLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgcz10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLG49WyJ4ZmFFeGNsZ3JvdXAiXSxvPWxheW91dENsYXNzKHRoaXMpO28mJm4ucHVzaChvKTtpc1ByaW50T25seSh0aGlzKSYmbi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtpLnN0eWxlPXM7aS5jbGFzcz1uO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO3RoaXNbWHNdKCk7Y29uc3QgZz0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxjPWc/MjoxO2Zvcig7dGhpc1tzc10uYXR0ZW1wdDxjO3RoaXNbc3NdLmF0dGVtcHQrKyl7ZyYmMT09PXRoaXNbc3NdLmF0dGVtcHQmJih0aGlzW3NzXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW19yXSh7ZmlsdGVyOnIsaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tqc10oKTtyZXR1cm4gZX1pZihnJiYwPT09dGhpc1tzc10uYXR0ZW1wdCYmMD09PXRoaXNbc3NdLm51bWJlckluTGluZSYmIXRoaXNbeXNdKClbc3NdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tzc10uYXR0ZW1wdD1jO2JyZWFrfX10aGlzW2pzXSgpO2F8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYodGhpc1tzc10uYXR0ZW1wdD09PWMpe2F8fGRlbGV0ZSB0aGlzW3NzXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBDPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtDPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbD1NYXRoLm1heCh0aGlzW3NzXS53aWR0aCtDLHRoaXMud3x8MCksUT1NYXRoLm1heCh0aGlzW3NzXS5oZWlnaHQraCx0aGlzLmh8fDApLEU9W3RoaXMueCx0aGlzLnksbCxRXTsiIj09PXRoaXMudyYmKHMud2lkdGg9bWVhc3VyZVRvU3RyaW5nKGwpKTsiIj09PXRoaXMuaCYmKHMuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhRKSk7Y29uc3QgdT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmksY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxpKTtkZWxldGUgdGhpc1tzc107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsdSksRSl9fWNsYXNzIEV4ZWN1dGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPWdldFN0cmluZ09wdGlvbihlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJleHRyYXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGaWVsZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W1JzXSgpe3JldHVybiEwfVtlbl0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NuXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZighdGhpcy51aSl7dGhpcy51aT1uZXcgVWkoe30pO3RoaXMudWlbd3NdPXRoaXNbd3NdO3RoaXNbVnJdKHRoaXMudWkpO2xldCBlO3N3aXRjaCh0aGlzLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCl7Y2FzZSAwOmU9bmV3IFRleHRFZGl0KHt9KTt0aGlzLnVpLnRleHRFZGl0PWU7YnJlYWs7Y2FzZSAxOmU9bmV3IENoZWNrQnV0dG9uKHt9KTt0aGlzLnVpLmNoZWNrQnV0dG9uPWU7YnJlYWs7Y2FzZSAyOmU9bmV3IENob2ljZUxpc3Qoe30pO3RoaXMudWkuY2hvaWNlTGlzdD1lfXRoaXMudWlbVnJdKGUpfWlmKCF0aGlzLnVpfHwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXMuY2FwdGlvbiYmZGVsZXRlIHRoaXMuY2FwdGlvbltzc107dGhpc1tYc10oKTtjb25zdCB0PXRoaXMuY2FwdGlvbj90aGlzLmNhcHRpb25bc25dKGUpLmh0bWw6bnVsbCxpPXRoaXMudyxhPXRoaXMuaDtsZXQgcj0wLHM9MDtpZih0aGlzLm1hcmdpbil7cj10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDtzPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWxldCBuPW51bGw7aWYoIiI9PT10aGlzLnd8fCIiPT09dGhpcy5oKXtsZXQgdD1udWxsLGk9bnVsbCxhPTAsbz0wO2lmKHRoaXMudWkuY2hlY2tCdXR0b24pYT1vPXRoaXMudWkuY2hlY2tCdXR0b24uc2l6ZTtlbHNle2NvbnN0e3c6dCxoOml9PWxheW91dE5vZGUodGhpcyxlKTtpZihudWxsIT09dCl7YT10O289aX1lbHNlIG89ZnVuY3Rpb24gZm9udHNfZ2V0TWV0cmljcyhlLHQ9ITEpe2xldCBpPW51bGw7aWYoZSl7Y29uc3QgdD1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKSxhPWVbd3NdLmZvbnRGaW5kZXIuZmluZCh0KTtpPXNlbGVjdEZvbnQoZSxhKX1pZighaSlyZXR1cm57bGluZUhlaWdodDoxMixsaW5lR2FwOjIsbGluZU5vR2FwOjEwfTtjb25zdCBhPWUuc2l6ZXx8MTAscj1pLmxpbmVIZWlnaHQ/TWF0aC5tYXgodD8wOjEuMixpLmxpbmVIZWlnaHQpOjEuMixzPXZvaWQgMD09PWkubGluZUdhcD8uMjppLmxpbmVHYXA7cmV0dXJue2xpbmVIZWlnaHQ6ciphLGxpbmVHYXA6cyphLGxpbmVOb0dhcDpNYXRoLm1heCgxLHItcykqYX19KHRoaXMuZm9udCwhMCkubGluZU5vR2FwfW49Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW1FzXSgpKTthKz1uLnc7bys9bi5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpyLGg6cyxpc0Jyb2tlbjpufT10aGlzLmNhcHRpb25bUXNdKGUpO2lmKG4mJnRoaXNbcHNdKClbTXNdKCkpe3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10PXI7aT1zO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0Kz1hO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6aSs9b319ZWxzZXt0PWE7aT1vfWlmKHQmJiIiPT09dGhpcy53KXt0Kz1yO3RoaXMudz1NYXRoLm1pbih0aGlzLm1heFc8PTA/MS8wOnRoaXMubWF4Vyx0aGlzLm1pblcrMTx0P3Q6dGhpcy5taW5XKX1pZihpJiYiIj09PXRoaXMuaCl7aSs9czt0aGlzLmg9TWF0aC5taW4odGhpcy5tYXhIPD0wPzEvMDp0aGlzLm1heEgsdGhpcy5taW5IKzE8aT9pOnRoaXMubWluSCl9fXRoaXNbanNdKCk7Zml4RGltZW5zaW9ucyh0aGlzKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz1pO3RoaXMuaD1hO3RoaXNbanNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IG89dG9TdHlsZSh0aGlzLCJmb250IiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsInByZXNlbmNlIiwibWFyZ2luIiwiaEFsaWduIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLG8pO2NvbnN0IGc9WyJ4ZmFGaWVsZCJdO3RoaXMuZm9udCYmZy5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJmcucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgYz17c3R5bGU6byxpZDp0aGlzW2duXSxjbGFzczpnfTtpZihvLm1hcmdpbil7by5wYWRkaW5nPW8ubWFyZ2luO2RlbGV0ZSBvLm1hcmdpbn1zZXRBY2Nlc3ModGhpcyxnKTt0aGlzLm5hbWUmJihjLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBDPVtdLGg9e25hbWU6ImRpdiIsYXR0cmlidXRlczpjLGNoaWxkcmVuOkN9O2FwcGx5QXNzaXN0KHRoaXMsYyk7Y29uc3QgbD10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltvbl0oKTpudWxsLFE9Y29tcHV0ZUJib3godGhpcyxoLGUpLEU9dGhpcy51aVtzbl0oKS5odG1sO2lmKCFFKXtPYmplY3QuYXNzaWduKG8sbCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9dGhpc1t0bl0mJihFLmNoaWxkcmVuPy5bMF0/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbdG5dOkUuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3RuXSk7RS5hdHRyaWJ1dGVzLnN0eWxlfHwoRS5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCB1PW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT1FLmNoaWxkcmVuLmxlbmd0aCYmKFt1XT1FLmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKEUuYXR0cmlidXRlcy5zdHlsZSxsKX1lbHNlIE9iamVjdC5hc3NpZ24obyxsKTtDLnB1c2goRSk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdClFLmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtzbl0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVthbl0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtRc10oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtzbl0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYoRS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09RS5jaGlsZHJlblswXS5uYW1lP0UuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOkUuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJkUuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXtuPW58fGdldEJvcmRlckRpbXModGhpcy51aVtRc10oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW1FzXShlKS5oKTtjb25zdCBpPXRoaXMuaC10LXMtbi5oO0UuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGkpfWVsc2UgRS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9dSYmRS5jaGlsZHJlbi5wdXNoKHUpO2lmKCF0KXtFLmF0dHJpYnV0ZXMuY2xhc3MmJkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9aWYodGhpcy51aS5idXR0b24pe28ucGFkZGluZyYmZGVsZXRlIG8ucGFkZGluZzsiZGl2Ij09PXQubmFtZSYmKHQubmFtZT0ic3BhbiIpO0UuY2hpbGRyZW4ucHVzaCh0KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgsUSl9dGhpcy51aS5jaGVja0J1dHRvbiYmKHQuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIik7RS5hdHRyaWJ1dGVzLmNsYXNzfHwoRS5hdHRyaWJ1dGVzLmNsYXNzPVtdKTtFLmNoaWxkcmVuLnNwbGljZSgwLDAsdCk7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJpbmxpbmUiOkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7YnJlYWs7Y2FzZSJyaWdodCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVJpZ2h0Iik7YnJlYWs7Y2FzZSJ0b3AiOkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFUb3AiKTticmVhaztjYXNlImJvdHRvbSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUJvdHRvbSIpfXRoaXMudz1pO3RoaXMuaD1hO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGgpLFEpfX1jbGFzcyBGaWxsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtvbl0oKXtjb25zdCBlPXRoaXNbbXNdKCksdD1lW21zXSgpW21zXSgpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0iY29sb3IiLHI9YTtpZihlIGluc3RhbmNlb2YgQm9yZGVyKXthPSJiYWNrZ3JvdW5kLWNvbG9yIjtyPSJiYWNrZ3JvdW5kIjt0IGluc3RhbmNlb2YgVWkmJihpLmJhY2tncm91bmRDb2xvcj0id2hpdGUiKX1pZihlIGluc3RhbmNlb2YgUmVjdGFuZ2xlfHxlIGluc3RhbmNlb2YgQXJjKXthPXI9ImZpbGwiO2kuZmlsbD0id2hpdGUifWZvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJjb2xvciI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZighKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpKWNvbnRpbnVlO2NvbnN0IHM9dFtvbl0odGhpcy5jb2xvcik7cyYmKGlbcy5zdGFydHNXaXRoKCIjIik/YTpyXT1zKTtyZXR1cm4gaX1pZih0aGlzLmNvbG9yPy52YWx1ZSl7Y29uc3QgZT10aGlzLmNvbG9yW29uXSgpO2lbZS5zdGFydHNXaXRoKCIjIik/YTpyXT1lfXJldHVybiBpfX1jbGFzcyBGaWx0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImZpbHRlciIsITApO3RoaXMuYWRkUmV2b2NhdGlvbkluZm89Z2V0U3RyaW5nT3B0aW9uKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZlcnNpb249Z2V0SW50ZWdlcih7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsO3RoaXMuY2VydGlmaWNhdGVzPW51bGw7dGhpcy5kaWdlc3RNZXRob2RzPW51bGw7dGhpcy5lbmNvZGluZ3M9bnVsbDt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGw7dGhpcy5oYW5kbGVyPW51bGw7dGhpcy5sb2NrRG9jdW1lbnQ9bnVsbDt0aGlzLm1kcD1udWxsO3RoaXMucmVhc29ucz1udWxsO3RoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEZsb2F0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbnNdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbaXNdLnRyaW0oKSk7dGhpc1tpc109aXNOYU4oZSk/bnVsbDplfVtzbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2lzXT90aGlzW2lzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgdGVtcGxhdGVfRm9udCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZm9udCIsITApO3RoaXMuYmFzZWxpbmVTaGlmdD1nZXRNZWFzdXJlbWVudChlLmJhc2VsaW5lU2hpZnQpO3RoaXMuZm9udEhvcml6b250YWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRIb3Jpem9udGFsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5mb250VmVydGljYWxTY2FsZT1nZXRGbG9hdCh7ZGF0YTplLmZvbnRWZXJ0aWNhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXJuaW5nTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5rZXJuaW5nTW9kZSxbIm5vbmUiLCJwYWlyIl0pO3RoaXMubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudChlLmxldHRlclNwYWNpbmcsIjAiKTt0aGlzLmxpbmVUaHJvdWdoPWdldEludGVnZXIoe2RhdGE6ZS5saW5lVGhyb3VnaCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLmxpbmVUaHJvdWdoUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLmxpbmVUaHJvdWdoUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLm92ZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS5vdmVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLm92ZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLm92ZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnBvc3R1cmU9Z2V0U3RyaW5nT3B0aW9uKGUucG9zdHVyZSxbIm5vcm1hbCIsIml0YWxpYyJdKTt0aGlzLnNpemU9Z2V0TWVhc3VyZW1lbnQoZS5zaXplLCIxMHB0Iik7dGhpcy50eXBlZmFjZT1lLnR5cGVmYWNlfHwiQ291cmllciI7dGhpcy51bmRlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLnVuZGVybGluZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZXx8Mj09PWV9KTt0aGlzLnVuZGVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS51bmRlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndlaWdodD1nZXRTdHJpbmdPcHRpb24oZS53ZWlnaHQsWyJub3JtYWwiLCJib2xkIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGx9W3pyXShlKXtzdXBlclt6cl0oZSk7dGhpc1t3c10udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W29uXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO2lmKHQpaWYoIiMwMDAwMDAiPT09dClkZWxldGUgZS5jb2xvcjtlbHNlIGlmKCF0LnN0YXJ0c1dpdGgoIiMiKSl7ZS5iYWNrZ3JvdW5kPXQ7ZS5iYWNrZ3JvdW5kQ2xpcD0idGV4dCI7ZS5jb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcodGhpcy5iYXNlbGluZVNoaWZ0KSk7ZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIjtlLmxldHRlclNwYWNpbmc9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGV0dGVyU3BhY2luZyk7aWYoMCE9PXRoaXMubGluZVRocm91Z2gpe2UudGV4dERlY29yYXRpb249ImxpbmUtdGhyb3VnaCI7Mj09PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWlmKDAhPT10aGlzLm92ZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSI7Mj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFN0eWxlPXRoaXMucG9zdHVyZTtlLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyguOTkqdGhpcy5zaXplKTtzZXRGb250RmFtaWx5KHRoaXMsdGhpcyx0aGlzW3dzXS5mb250RmluZGVyLGUpO2lmKDAhPT10aGlzLnVuZGVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0idW5kZXJsaW5lIjsyPT09dGhpcy51bmRlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpfWUuZm9udFdlaWdodD10aGlzLndlaWdodDtyZXR1cm4gZX19Y2xhc3MgRm9ybWF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJmb3JtYXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBIYW5kbGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiaHlwaGVuYXRpb24iKTt0aGlzLmV4Y2x1ZGVBbGxDYXBzPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlQWxsQ2FwcyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZXhjbHVkZUluaXRpYWxDYXA9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVJbml0aWFsQ2FwLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oeXBoZW5hdGU9Z2V0SW50ZWdlcih7ZGF0YTplLmh5cGhlbmF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wdXNoQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnB1c2hDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5yZW1haW5DaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucmVtYWluQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndvcmRDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUud29yZENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTo3LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgSW1hZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImltYWdlIik7dGhpcy5hc3BlY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuYXNwZWN0LFsiZml0IiwiYWN0dWFsIiwiaGVpZ2h0Iiwibm9uZSIsIndpZHRoIl0pO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbImJhc2U2NCIsIm5vbmUiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bc25dKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIUtuLmhhcyh0aGlzLmNvbnRlbnRUeXBlLnRvTG93ZXJDYXNlKCkpKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBlPXRoaXNbd3NdLmltYWdlcyYmdGhpc1t3c10uaW1hZ2VzLmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tpc10pKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT1zdHJpbmdUb0J5dGVzKGF0b2IodGhpc1tpc10pKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGldb2YgcW4paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGkpPT50PT09ZVtpXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWk7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBpO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6aT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmk9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmk9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbbXNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6aSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVttc10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc25dKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuc10oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbaXNdLnRyaW0oKSwxMCk7dGhpc1tpc109aXNOYU4oZSk/bnVsbDplfVtzbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2lzXT90aGlzW2lzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtzbl0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbdXNdKCkpZS5wdXNoKHRbYW5dKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtzbl0oKXtjb25zdCBlPXRoaXNbbXNdKClbbXNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxpPXRbb25dKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPWkuY29sb3I7bGV0IHMsbixvLGcsYz0iMTAwJSIsQz0iMTAwJSI7aWYoZS53PD1yKXtbcyxuLG8sZ109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLG4sbyxnXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO0M9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsbixvLGddPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsbixvLGddPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOnZuLHgxOnMseTE6bix4MjpvLHkyOmcsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczp2bix3aWR0aDpjLGhlaWdodDpDLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W29uXShlKXtlPWU/ZVtvbl0oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltvbl0oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbnNdKCl7dGhpc1tpc109Z2V0U3RyaW5nT3B0aW9uKHRoaXNbaXNdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtvbl0oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoaS5sZW5ndGg8NHx8aVsyXTwwfHxpWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbYSxyLHMsbl09aTtyZXR1cm57eDphLHk6cix3aWR0aDpzLGhlaWdodDpufX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3NuXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1ttc10oKVttc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW2duXSxkYXRhSWQ6aVthc10/Lltnbl18fGlbZ25dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3pyXSgpe2NvbnN0IGU9dGhpc1ttc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1FzXSgpe2lmKCF0aGlzW3NzXSl7Y29uc3QgZT10aGlzW21zXSgpLHQ9dGhpc1t5c10oKSxpPXRbenNdKHRoaXMudGFyZ2V0LGUpLGE9dFt6c10odGhpcy5sZWFkZXIsZSkscj10W3pzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tzc109e3RhcmdldDppPy5bMF18fG51bGwsbGVhZGVyOmE/LlswXXx8bnVsbCx0cmFpbGVyOnI/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbc3NdfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtIc10oKXtpZighdGhpc1tzc10pe3RoaXNbc3NdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tzc10ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9WyRyXSgpe2RlbGV0ZSB0aGlzW3NzXX1bZnNdKCl7dGhpc1tzc118fCh0aGlzW3NzXT17bnVtYmVyT2ZVc2U6MH0pO2NvbnN0IGU9dGhpc1ttc10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tIc10oKSl7dGhpc1tzc10ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbZnNdKCl9W2NzXSgpe3JldHVybiB0aGlzW3NzXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtzbl0oKXt0aGlzW3NzXXx8KHRoaXNbc3NdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3NzXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tzc10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbc3NdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tfcl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbX3JdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1tnbl0sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9WyRyXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVskcl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVskcl0oKX1bSHNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbc3NdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtmc10oKXt0aGlzW3NzXXx8KHRoaXNbc3NdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9KTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tzc10ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbc3NdLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW3NzXS5wYWdlSW5kZXhdW2ZzXSgpfWlmKHRoaXNbc3NdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbc3NdLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbc3NdLnBhZ2VTZXRJbmRleF1bZnNdKCl9aWYodGhpc1tIc10oKSl7dGhpc1tzc10ubnVtYmVyT2ZVc2UrPTE7dGhpc1tzc10ucGFnZUluZGV4PS0xO3RoaXNbc3NdLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tmc10oKX1jb25zdCBlPXRoaXNbbXNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbZnNdKCk7dGhpc1skcl0oKTtyZXR1cm4gdGhpc1tmc10oKX1jb25zdCBlPXRoaXNbeXNdKClbc3NdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGk9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pKTtyZXR1cm4gYXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtvbl0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpblJpZ2h0KSk7IiIhPT10aGlzLnNwYWNlQWJvdmUmJihlLnBhZGRpbmdUb3A9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VBYm92ZSkpOyIiIT09dGhpcy5zcGFjZUJlbG93JiYoZS5wYWRkaW5nQm90dG9tPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQmVsb3cpKTtpZigiIiE9PXRoaXMudGV4dEluZGVudCl7ZS50ZXh0SW5kZW50PW1lYXN1cmVUb1N0cmluZyh0aGlzLnRleHRJbmRlbnQpO2ZpeFRleHRJbmRlbnQoZSl9dGhpcy5saW5lSGVpZ2h0PjAmJihlLmxpbmVIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGluZUhlaWdodCkpOyIiIT09dGhpcy50YWJEZWZhdWx0JiYoZS50YWJTaXplPW1lYXN1cmVUb1N0cmluZyh0aGlzLnRhYkRlZmF1bHQpKTt0aGlzLnRhYlN0b3BzLmxlbmd0aDt0aGlzLmh5cGhlbmF0YXRpb24mJk9iamVjdC5hc3NpZ24oZSx0aGlzLmh5cGhlbmF0YXRpb25bb25dKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInBhc3N3b3JkRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wYXNzd29yZENoYXI9ZS5wYXNzd29yZENoYXJ8fCIqIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIHRlbXBsYXRlX1BhdHRlcm4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInBhdHRlcm4iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiY3Jvc3NIYXRjaCIsImNyb3NzRGlhZ29uYWwiLCJkaWFnb25hbExlZnQiLCJkaWFnb25hbFJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bb25dKGUpe2U9ZT9lW29uXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltvbl0oKToiIzAwMDAwMCIsaT0icmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIsYT1gJHtlfSwke2V9IDVweCwke3R9IDVweCwke3R9IDEwcHhgO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY3Jvc3NIYXRjaCI6cmV0dXJuYCR7aX0odG8gdG9wLCR7YX0pICR7aX0odG8gcmlnaHQsJHthfSlgO2Nhc2UiY3Jvc3NEaWFnb25hbCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSkgJHtpfSgtNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxMZWZ0IjpyZXR1cm5gJHtpfSg0NWRlZywke2F9KWA7Y2FzZSJkaWFnb25hbFJpZ2h0IjpyZXR1cm5gJHtpfSgtNDVkZWcsJHthfSlgO2Nhc2UiaG9yaXpvbnRhbCI6cmV0dXJuYCR7aX0odG8gdG9wLCR7YX0pYDtjYXNlInZlcnRpY2FsIjpyZXR1cm5gJHtpfSh0byByaWdodCwke2F9KWB9cmV0dXJuIiJ9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInByb3RvIiwhMCk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFzc2lzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29rZW5kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9yZGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaGVja0J1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaG9pY2VMaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbWI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVzYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2RpbmdzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhlY3V0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9udD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaGFuZGxlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oeXBoZW5hdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtlZXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lYXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hcmdpbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVkaXVtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2NjdXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub3ZlcmZsb3c9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXJhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhc3N3b3JkRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBpY3R1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmFkaWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb25zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlY3RhbmdsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25hdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNwZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN0aXBwbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZVN0YW1wPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2FsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbGlkYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbHVlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJhZGlhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bb25dKGUpe2U9ZT9lW29uXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltvbl0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInJlYXNvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSZWFzb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyZWFzb25zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmVjdGFuZ2xlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyZWN0YW5nbGUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3NuXSgpe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLmxlbmd0aD90aGlzLmVkZ2UuY2hpbGRyZW5bMF06bmV3IEVkZ2Uoe30pLHQ9ZVtvbl0oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW29uXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7Y29uc3QgYT0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtvbl0oKSxyPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToicmVjdCIsYXR0cmlidXRlczp7eG1sbnM6dm4sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDphLnJhZGl1cyxyeTphLnJhZGl1cyxzdHlsZTppfX1dLGF0dHJpYnV0ZXM6e3htbG5zOnZuLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbbXNdKClbbXNdKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbcl19KTtyLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHIpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzY3JpcHQiKTt0aGlzLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIjt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTZXRQcm9wZXJ0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX1jbGFzcyBTaWduRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic2lnbmluZyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInNvbGlkIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bb25dKGUpe3JldHVybiBlP2Vbb25dKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3BlYWsiKTt0aGlzLmRpc2FibGU9Z2V0SW50ZWdlcih7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9Z2V0U3RyaW5nT3B0aW9uKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3RpcHBsZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yYXRlPWdldEludGVnZXIoe2RhdGE6ZS5yYXRlLGRlZmF1bHRWYWx1ZTo1MCx2YWxpZGF0ZTplPT5lPj0wJiZlPD0xMDB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W29uXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+Ii0xIj09PWU/LTE6Z2V0TWVhc3VyZW1lbnQoZSkpKTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPWdldFN0cmluZ09wdGlvbihlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9Z2V0U3RyaW5nT3B0aW9uKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3BzXSgpe2NvbnN0IGU9dGhpc1ttc10oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtwc10oKTplfVtSc10oKXtyZXR1cm4hMH1bTXNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbc3NdLmF0dGVtcHQmJnRoaXNbc3NdLm51bWJlckluTGluZT4wfHx0aGlzW21zXSgpW01zXSgpfSpbZHNdKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W29zXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W1pyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtjc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1VzXSgpe2NvbnN0IGU9dGhpc1twc10oKTtpZighZVtVc10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3NzXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3NzXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3NzXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdCl7dGhpc1tzc10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtzc10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbc3NdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3NuXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3dzXT10aGlzW3dzXTt0aGlzW1ZyXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2Vbd3NdPXRoaXNbd3NdO3RoaXNbVnJdKGUpO3RoaXMuYnJlYWtCZWZvcmUucHVzaChlKX1pZigiIiE9PXRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQpe2NvbnN0IGU9bmV3IE92ZXJmbG93KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7ZVt3c109dGhpc1t3c107dGhpc1tWcl0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbWnNdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZOyh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO2lmKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpcmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbc3NdPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLGk9e2lkOnRoaXNbZ25dLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxpLmNsYXNzKTt0aGlzW3NzXXx8KHRoaXNbc3NdPU9iamVjdC5jcmVhdGUobnVsbCkpO09iamVjdC5hc3NpZ24odGhpc1tzc10se2NoaWxkcmVuOnQsbGluZTpudWxsLGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3QgYT10aGlzW3lzXSgpLHI9YVtzc10ubm9MYXlvdXRGYWlsdXJlLHM9dGhpc1tVc10oKTtzfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBuPW5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImV4Y2xHcm91cCIsImZpZWxkIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbcHNdKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbc3NdLmNvbHVtbldpZHRocz1lO3RoaXNbc3NdLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgbz10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGc9WyJ4ZmFTdWJmb3JtIl0sYz1sYXlvdXRDbGFzcyh0aGlzKTtjJiZnLnB1c2goYyk7aS5zdHlsZT1vO2kuY2xhc3M9Zzt0aGlzLm5hbWUmJihpLnhmYU5hbWU9dGhpcy5uYW1lKTtpZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbUXNdKCk7aWYodC5hZGRMZWFkZXIpe3QuYWRkTGVhZGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC5sZWFkZXIsZSl9fXRoaXNbWHNdKCk7Y29uc3QgQz0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxoPUM/MjoxO2Zvcig7dGhpc1tzc10uYXR0ZW1wdDxoO3RoaXNbc3NdLmF0dGVtcHQrKyl7QyYmMT09PXRoaXNbc3NdLmF0dGVtcHQmJih0aGlzW3NzXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW19yXSh7ZmlsdGVyOm4saW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tqc10oKTtyZXR1cm4gZX1pZihDJiYwPT09dGhpc1tzc10uYXR0ZW1wdCYmMD09PXRoaXNbc3NdLm51bWJlckluTGluZSYmIWFbc3NdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tzc10uYXR0ZW1wdD1oO2JyZWFrfX10aGlzW2pzXSgpO3N8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7YVtzc10ubm9MYXlvdXRGYWlsdXJlPXI7aWYodGhpc1tzc10uYXR0ZW1wdD09PWgpe3RoaXMub3ZlcmZsb3cmJih0aGlzW3lzXSgpW3NzXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7c3x8ZGVsZXRlIHRoaXNbc3NdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W1FzXSgpO2lmKHQuYWRkVHJhaWxlcil7dC5hZGRUcmFpbGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC50cmFpbGVyLGUpfX1sZXQgbD0wLFE9MDtpZih0aGlzLm1hcmdpbil7bD10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDtRPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IEU9TWF0aC5tYXgodGhpc1tzc10ud2lkdGgrbCx0aGlzLnd8fDApLHU9TWF0aC5tYXgodGhpc1tzc10uaGVpZ2h0K1EsdGhpcy5ofHwwKSxkPVt0aGlzLngsdGhpcy55LEUsdV07IiI9PT10aGlzLncmJihvLndpZHRoPW1lYXN1cmVUb1N0cmluZyhFKSk7IiI9PT10aGlzLmgmJihvLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodSkpO2lmKCgiMHB4Ij09PW8ud2lkdGh8fCIwcHgiPT09by5oZWlnaHQpJiYwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Y29uc3QgZj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmksY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxpKTtjb25zdCBwPUhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZiksZCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbc3NdLmFmdGVyQnJlYWtBZnRlcj1wO3JldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX19ZGVsZXRlIHRoaXNbc3NdO3JldHVybiBwfX1jbGFzcyBTdWJmb3JtU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbZHNdKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3BzXSgpe2xldCBlPXRoaXNbbXNdKCk7Zm9yKDshKGUgaW5zdGFuY2VvZiBTdWJmb3JtKTspZT1lW21zXSgpO3JldHVybiBlfVtSc10oKXtyZXR1cm4hMH19Y2xhc3MgU3ViamVjdEROIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbnNdKCl7dGhpc1tpc109bmV3IE1hcCh0aGlzW2lzXS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKChlPT57KGU9ZS5zcGxpdCgiPSIsMikpWzBdPWVbMF0udHJpbSgpO3JldHVybiBlfSkpKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3ViamVjdEROcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwic3VibWl0IiwhMCk7dGhpcy5lbWJlZFBERj1nZXRJbnRlZ2VyKHtkYXRhOmUuZW1iZWRQREYsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJ4ZHAiLCJmb3JtZGF0YSIsInBkZiIsInVybGVuY29kZWQiLCJ4ZmQiLCJ4bWwiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50ZXh0RW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLnRleHRFbmNvZGluZz9lLnRleHRFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueGRwQ29udGVudD1lLnhkcENvbnRlbnR8fCIiO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPWdldFN0cmluZ09wdGlvbihlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtuc10oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmd2FybigiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbdG5dPTVlM31bVXNdKCl7cmV0dXJuITB9W3pzXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tEc10uZ2V0KGUuc2xpY2UoMSkpXTpzZWFyY2hOb2RlKHRoaXMsdCxlLCEwLCEwKX0qW3JuXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W119KTt0aGlzW3NzXT17b3ZlcmZsb3dOb2RlOm51bGwsZmlyc3RVbnNwbGl0dGFibGU6bnVsbCxjdXJyZW50Q29udGVudEFyZWE6bnVsbCxjdXJyZW50UGFnZUFyZWE6bnVsbCxub0xheW91dEZhaWx1cmU6ITEscGFnZU51bWJlcjoxLHBhZ2VQb3NpdGlvbjoiZmlyc3QiLG9kZE9yRXZlbjoib2RkIixibGFua09yTm90Qmxhbms6Im5vbkJsYW5rIixwYXJhU3RhY2s6W119O2NvbnN0IGU9dGhpcy5zdWJmb3JtLmNoaWxkcmVuWzBdO2UucGFnZVNldFskcl0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixpPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgYT1udWxsLHI9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPXIudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7cj1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuYnJlYWs/LmJlZm9yZVRhcmdldCl7cj1lLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs/LmJlZm9yZVRhcmdldCl7cj1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1yLmJlZm9yZVRhcmdldH1pZihyKXtjb25zdCBlPXRoaXNbenNdKHMsclttc10oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXthPWU7cltzc109e319fWF8fChhPXRbMF0pO2Fbc3NdPXtudW1iZXJPZlVzZToxfTtjb25zdCBuPWFbbXNdKCk7bltzc109e251bWJlck9mVXNlOjEscGFnZUluZGV4Om4ucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKSxwYWdlU2V0SW5kZXg6MH07bGV0IG8sZz1udWxsLGM9bnVsbCxDPSEwLGg9MCxsPTA7Zm9yKDs7KXtpZihDKWg9MDtlbHNle2kuY2hpbGRyZW4ucG9wKCk7aWYoMz09KytoKXt3YXJuKCJYRkEgLSBTb21ldGhpbmcgZ29lcyB3cm9uZzogcGxlYXNlIGZpbGUgYSBidWcuIik7cmV0dXJuIGl9fW89bnVsbDt0aGlzW3NzXS5jdXJyZW50UGFnZUFyZWE9YTtjb25zdCB0PWFbc25dKCkuaHRtbDtpLmNoaWxkcmVuLnB1c2godCk7aWYoZyl7dGhpc1tzc10ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChnW3NuXShhW3NzXS5zcGFjZSkuaHRtbCk7Zz1udWxsfWlmKGMpe3RoaXNbc3NdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goY1tzbl0oYVtzc10uc3BhY2UpLmh0bWwpO2M9bnVsbH1jb25zdCByPWEuY29udGVudEFyZWEuY2hpbGRyZW4scz10LmNoaWxkcmVuLmZpbHRlcigoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKSk7Qz0hMTt0aGlzW3NzXS5maXJzdFVuc3BsaXR0YWJsZT1udWxsO3RoaXNbc3NdLm5vTGF5b3V0RmFpbHVyZT0hMTtjb25zdCBmbHVzaD10PT57Y29uc3QgaT1lW29zXSgpO2lmKGkpe0N8fD1pLmNoaWxkcmVuPy5sZW5ndGg+MDtzW3RdLmNoaWxkcmVuLnB1c2goaSl9fTtmb3IobGV0IHQ9bCxhPXIubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9dGhpc1tzc10uY3VycmVudENvbnRlbnRBcmVhPXJbdF0sbj17d2lkdGg6YS53LGhlaWdodDphLmh9O2w9MDtpZihnKXtzW3RdLmNoaWxkcmVuLnB1c2goZ1tzbl0obikuaHRtbCk7Zz1udWxsfWlmKGMpe3NbdF0uY2hpbGRyZW4ucHVzaChjW3NuXShuKS5odG1sKTtjPW51bGx9Y29uc3QgaD1lW3NuXShuKTtpZihoLnN1Y2Nlc3Mpe2lmKGguaHRtbCl7Q3x8PWguaHRtbC5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGguaHRtbCl9ZWxzZSFDJiZpLmNoaWxkcmVuLmxlbmd0aD4xJiZpLmNoaWxkcmVuLnBvcCgpO3JldHVybiBpfWlmKGguaXNCcmVhaygpKXtjb25zdCBlPWguYnJlYWtOb2RlO2ZsdXNoKHQpO2lmKCJhdXRvIj09PWUudGFyZ2V0VHlwZSljb250aW51ZTtpZihlLmxlYWRlcil7Zz10aGlzW3pzXShlLmxlYWRlcixlW21zXSgpKTtnPWc/Z1swXTpudWxsfWlmKGUudHJhaWxlcil7Yz10aGlzW3pzXShlLnRyYWlsZXIsZVttc10oKSk7Yz1jP2NbMF06bnVsbH1pZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtvPWVbc3NdLnRhcmdldDt0PTEvMH1lbHNlIGlmKGVbc3NdLnRhcmdldCl7bz1lW3NzXS50YXJnZXQ7bD1lW3NzXS5pbmRleCsxO3Q9MS8wfWVsc2UgdD1lW3NzXS5pbmRleH1lbHNlIGlmKHRoaXNbc3NdLm92ZXJmbG93Tm9kZSl7Y29uc3QgZT10aGlzW3NzXS5vdmVyZmxvd05vZGU7dGhpc1tzc10ub3ZlcmZsb3dOb2RlPW51bGw7Y29uc3QgaT1lW1FzXSgpLGE9aS50YXJnZXQ7aS5hZGRMZWFkZXI9bnVsbCE9PWkubGVhZGVyO2kuYWRkVHJhaWxlcj1udWxsIT09aS50cmFpbGVyO2ZsdXNoKHQpO2NvbnN0IHM9dDt0PTEvMDtpZihhIGluc3RhbmNlb2YgUGFnZUFyZWEpbz1hO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhKXtjb25zdCBlPXIuaW5kZXhPZihhKTtpZigtMSE9PWUpZT5zP3Q9ZS0xOmw9ZTtlbHNle289YVttc10oKTtsPW8uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKX19fWVsc2UgZmx1c2godCl9dGhpc1tzc10ucGFnZU51bWJlcis9MTtvJiYob1tIc10oKT9vW3NzXS5udW1iZXJPZlVzZSs9MTpvPW51bGwpO2E9b3x8YVtmc10oKTt5aWVsZCBudWxsfX19Y2xhc3MgVGV4dCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtYcl0oKXtyZXR1cm4hMH1bS3NdKGUpe2lmKGVbWXNdPT09Y24ueGh0bWwuaWQpe3RoaXNbaXNdPWU7cmV0dXJuITB9d2FybihgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVt2c119LmApO3JldHVybiExfVtPc10oZSl7dGhpc1tpc11pbnN0YW5jZW9mIFhGQU9iamVjdHx8c3VwZXJbT3NdKGUpfVtuc10oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbaXNdJiYodGhpc1tpc109dGhpc1tpc10ucmVwbGFjZUFsbCgiXHJcbiIsIlxuIikpfVtRc10oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbaXNdP3RoaXNbaXNdLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e3QmJmUucHVzaCh0KTtyZXR1cm4gZX0pLFtdKS5qb2luKCJcbiIpOnRoaXNbaXNdW2FuXSgpfVtzbl0oZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzW2lzXSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW2lzXSkuaHRtbDtpZih0aGlzW2lzXS5pbmNsdWRlcygiXHUyMDI5Iikpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbaXNdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW2lzXSkpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbaXNdLnNwbGl0KC9bXHUyMDI4XG5dLykuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pfSkpfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbaXNdW3NuXShlKX19Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRleHRFZGl0IiwhMCk7dGhpcy5hbGxvd1JpY2hUZXh0PWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd1JpY2hUZXh0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm11bHRpTGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4wPT09ZXx8MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52U2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLnZTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3NuXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBpO2NvbnN0IGE9dGhpc1ttc10oKVttc10oKTsiIj09PXRoaXMubXVsdGlMaW5lJiYodGhpcy5tdWx0aUxpbmU9YSBpbnN0YW5jZW9mIERyYXc/MTowKTtpPTE9PT10aGlzLm11bHRpTGluZT97bmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZXM6e2RhdGFJZDphW2FzXT8uW2duXXx8YVtnbl0sZmllbGRJZDphW2duXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDphW2FzXT8uW2duXXx8YVtnbl0sZmllbGRJZDphW2duXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtpLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtpLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2ldfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbnNdKCl7Y29uc3QgZT10aGlzW2lzXS50cmltKCk7dGhpc1tpc109ZT9uZXcgRGF0ZShlKTpudWxsfVtzbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbaXNdP3RoaXNbaXNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRpbWVTdGFtcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zZXJ2ZXI9ZS5zZXJ2ZXJ8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRvb2xUaXAgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtMc10oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bUXNdKCl7aWYodm9pZCAwPT09dGhpc1tzc10pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbc3NdPXQ7cmV0dXJuIHR9fXRoaXNbc3NdPW51bGx9cmV0dXJuIHRoaXNbc3NdfVtzbl0oZSl7Y29uc3QgdD10aGlzW1FzXSgpO3JldHVybiB0P3Rbc25dKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJ2YWxpZGF0ZSIsITApO3RoaXMuZm9ybWF0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXRUZXN0LFsid2FybmluZyIsImRpc2FibGVkIiwiZXJyb3IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bGxUZXN0PWdldFN0cmluZ09wdGlvbihlLm51bGxUZXN0LFsiZGlzYWJsZWQiLCJlcnJvciIsIndhcm5pbmciXSk7dGhpcy5zY3JpcHRUZXN0PWdldFN0cmluZ09wdGlvbihlLnNjcmlwdFRlc3QsWyJlcnJvciIsImRpc2FibGVkIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBWYWx1ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W2VuXShlKXtjb25zdCB0PXRoaXNbbXNdKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tWcl0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtpc109ZVtpc107cmV0dXJufWNvbnN0IGk9ZVt2c107aWYobnVsbD09PXRoaXNbaV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbWnNdKHQpfX10aGlzW2VbdnNdXT1lO3RoaXNbVnJdKGUpfWVsc2UgdGhpc1tpXVtpc109ZVtpc119W2FuXSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbaXNdP3RoaXMuZXhEYXRhW2lzXS50cmltKCk6dGhpcy5leERhdGFbaXNdW2FuXSgpLnRyaW0oKTtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImltYWdlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuKHRbaXNdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3NuXShlKXtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO2lmKGkgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuIGlbc25dKGUpfXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYXJpYWJsZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W0xzXSgpe3JldHVybiEwfX1jbGFzcyBUZW1wbGF0ZU5hbWVzcGFjZXtzdGF0aWNbSW5dKGUsdCl7aWYoVGVtcGxhdGVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IGk9VGVtcGxhdGVOYW1lc3BhY2VbZV0odCk7aVtBbl0odCk7cmV0dXJuIGl9fXN0YXRpYyBhcHBlYXJhbmNlRmlsdGVyKGUpe3JldHVybiBuZXcgQXBwZWFyYW5jZUZpbHRlcihlKX1zdGF0aWMgYXJjKGUpe3JldHVybiBuZXcgQXJjKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgQXJlYShlKX1zdGF0aWMgYXNzaXN0KGUpe3JldHVybiBuZXcgQXNzaXN0KGUpfXN0YXRpYyBiYXJjb2RlKGUpe3JldHVybiBuZXcgQmFyY29kZShlKX1zdGF0aWMgYmluZChlKXtyZXR1cm4gbmV3IEJpbmQoZSl9c3RhdGljIGJpbmRJdGVtcyhlKXtyZXR1cm4gbmV3IEJpbmRJdGVtcyhlKX1zdGF0aWMgYm9va2VuZChlKXtyZXR1cm4gbmV3IEJvb2tlbmQoZSl9c3RhdGljIGJvb2xlYW4oZSl7cmV0dXJuIG5ldyBCb29sZWFuRWxlbWVudChlKX1zdGF0aWMgYm9yZGVyKGUpe3JldHVybiBuZXcgQm9yZGVyKGUpfXN0YXRpYyBicmVhayhlKXtyZXR1cm4gbmV3IEJyZWFrKGUpfXN0YXRpYyBicmVha0FmdGVyKGUpe3JldHVybiBuZXcgQnJlYWtBZnRlcihlKX1zdGF0aWMgYnJlYWtCZWZvcmUoZSl7cmV0dXJuIG5ldyBCcmVha0JlZm9yZShlKX1zdGF0aWMgYnV0dG9uKGUpe3JldHVybiBuZXcgQnV0dG9uKGUpfXN0YXRpYyBjYWxjdWxhdGUoZSl7cmV0dXJuIG5ldyBDYWxjdWxhdGUoZSl9c3RhdGljIGNhcHRpb24oZSl7cmV0dXJuIG5ldyBDYXB0aW9uKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZShlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZXMoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZXMoZSl9c3RhdGljIGNoZWNrQnV0dG9uKGUpe3JldHVybiBuZXcgQ2hlY2tCdXR0b24oZSl9c3RhdGljIGNob2ljZUxpc3QoZSl7cmV0dXJuIG5ldyBDaG9pY2VMaXN0KGUpfXN0YXRpYyBjb2xvcihlKXtyZXR1cm4gbmV3IENvbG9yKGUpfXN0YXRpYyBjb21iKGUpe3JldHVybiBuZXcgQ29tYihlKX1zdGF0aWMgY29ubmVjdChlKXtyZXR1cm4gbmV3IENvbm5lY3QoZSl9c3RhdGljIGNvbnRlbnRBcmVhKGUpe3JldHVybiBuZXcgQ29udGVudEFyZWEoZSl9c3RhdGljIGNvcm5lcihlKXtyZXR1cm4gbmV3IENvcm5lcihlKX1zdGF0aWMgZGF0ZShlKXtyZXR1cm4gbmV3IERhdGVFbGVtZW50KGUpfXN0YXRpYyBkYXRlVGltZShlKXtyZXR1cm4gbmV3IERhdGVUaW1lKGUpfXN0YXRpYyBkYXRlVGltZUVkaXQoZSl7cmV0dXJuIG5ldyBEYXRlVGltZUVkaXQoZSl9c3RhdGljIGRlY2ltYWwoZSl7cmV0dXJuIG5ldyBEZWNpbWFsKGUpfXN0YXRpYyBkZWZhdWx0VWkoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VWkoZSl9c3RhdGljIGRlc2MoZSl7cmV0dXJuIG5ldyBEZXNjKGUpfXN0YXRpYyBkaWdlc3RNZXRob2QoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2QoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZHMoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2RzKGUpfXN0YXRpYyBkcmF3KGUpe3JldHVybiBuZXcgRHJhdyhlKX1zdGF0aWMgZWRnZShlKXtyZXR1cm4gbmV3IEVkZ2UoZSl9c3RhdGljIGVuY29kaW5nKGUpe3JldHVybiBuZXcgRW5jb2RpbmcoZSl9c3RhdGljIGVuY29kaW5ncyhlKXtyZXR1cm4gbmV3IEVuY29kaW5ncyhlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHREYXRhKGUpe3JldHVybiBuZXcgRW5jcnlwdERhdGEoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZChlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZHMoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kcyhlKX1zdGF0aWMgZXZlbnQoZSl7cmV0dXJuIG5ldyBFdmVudChlKX1zdGF0aWMgZXhEYXRhKGUpe3JldHVybiBuZXcgRXhEYXRhKGUpfXN0YXRpYyBleE9iamVjdChlKXtyZXR1cm4gbmV3IEV4T2JqZWN0KGUpfXN0YXRpYyBleGNsR3JvdXAoZSl7cmV0dXJuIG5ldyBFeGNsR3JvdXAoZSl9c3RhdGljIGV4ZWN1dGUoZSl7cmV0dXJuIG5ldyBFeGVjdXRlKGUpfXN0YXRpYyBleHRyYXMoZSl7cmV0dXJuIG5ldyBFeHRyYXMoZSl9c3RhdGljIGZpZWxkKGUpe3JldHVybiBuZXcgRmllbGQoZSl9c3RhdGljIGZpbGwoZSl7cmV0dXJuIG5ldyBGaWxsKGUpfXN0YXRpYyBmaWx0ZXIoZSl7cmV0dXJuIG5ldyBGaWx0ZXIoZSl9c3RhdGljIGZsb2F0KGUpe3JldHVybiBuZXcgRmxvYXQoZSl9c3RhdGljIGZvbnQoZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9Gb250KGUpfXN0YXRpYyBmb3JtYXQoZSl7cmV0dXJuIG5ldyBGb3JtYXQoZSl9c3RhdGljIGhhbmRsZXIoZSl7cmV0dXJuIG5ldyBIYW5kbGVyKGUpfXN0YXRpYyBoeXBoZW5hdGlvbihlKXtyZXR1cm4gbmV3IEh5cGhlbmF0aW9uKGUpfXN0YXRpYyBpbWFnZShlKXtyZXR1cm4gbmV3IEltYWdlKGUpfXN0YXRpYyBpbWFnZUVkaXQoZSl7cmV0dXJuIG5ldyBJbWFnZUVkaXQoZSl9c3RhdGljIGludGVnZXIoZSl7cmV0dXJuIG5ldyBJbnRlZ2VyKGUpfXN0YXRpYyBpc3N1ZXJzKGUpe3JldHVybiBuZXcgSXNzdWVycyhlKX1zdGF0aWMgaXRlbXMoZSl7cmV0dXJuIG5ldyBJdGVtcyhlKX1zdGF0aWMga2VlcChlKXtyZXR1cm4gbmV3IEtlZXAoZSl9c3RhdGljIGtleVVzYWdlKGUpe3JldHVybiBuZXcgS2V5VXNhZ2UoZSl9c3RhdGljIGxpbmUoZSl7cmV0dXJuIG5ldyBMaW5lKGUpfXN0YXRpYyBsaW5lYXIoZSl7cmV0dXJuIG5ldyBMaW5lYXIoZSl9c3RhdGljIGxvY2tEb2N1bWVudChlKXtyZXR1cm4gbmV3IExvY2tEb2N1bWVudChlKX1zdGF0aWMgbWFuaWZlc3QoZSl7cmV0dXJuIG5ldyBNYW5pZmVzdChlKX1zdGF0aWMgbWFyZ2luKGUpe3JldHVybiBuZXcgTWFyZ2luKGUpfXN0YXRpYyBtZHAoZSl7cmV0dXJuIG5ldyBNZHAoZSl9c3RhdGljIG1lZGl1bShlKXtyZXR1cm4gbmV3IE1lZGl1bShlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IE1lc3NhZ2UoZSl9c3RhdGljIG51bWVyaWNFZGl0KGUpe3JldHVybiBuZXcgTnVtZXJpY0VkaXQoZSl9c3RhdGljIG9jY3VyKGUpe3JldHVybiBuZXcgT2NjdXIoZSl9c3RhdGljIG9pZChlKXtyZXR1cm4gbmV3IE9pZChlKX1zdGF0aWMgb2lkcyhlKXtyZXR1cm4gbmV3IE9pZHMoZSl9c3RhdGljIG92ZXJmbG93KGUpe3JldHVybiBuZXcgT3ZlcmZsb3coZSl9c3RhdGljIHBhZ2VBcmVhKGUpe3JldHVybiBuZXcgUGFnZUFyZWEoZSl9c3RhdGljIHBhZ2VTZXQoZSl7cmV0dXJuIG5ldyBQYWdlU2V0KGUpfXN0YXRpYyBwYXJhKGUpe3JldHVybiBuZXcgUGFyYShlKX1zdGF0aWMgcGFzc3dvcmRFZGl0KGUpe3JldHVybiBuZXcgUGFzc3dvcmRFZGl0KGUpfXN0YXRpYyBwYXR0ZXJuKGUpe3JldHVybiBuZXcgdGVtcGxhdGVfUGF0dGVybihlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHByb3RvKGUpe3JldHVybiBuZXcgUHJvdG8oZSl9c3RhdGljIHJhZGlhbChlKXtyZXR1cm4gbmV3IFJhZGlhbChlKX1zdGF0aWMgcmVhc29uKGUpe3JldHVybiBuZXcgUmVhc29uKGUpfXN0YXRpYyByZWFzb25zKGUpe3JldHVybiBuZXcgUmVhc29ucyhlKX1zdGF0aWMgcmVjdGFuZ2xlKGUpe3JldHVybiBuZXcgUmVjdGFuZ2xlKGUpfXN0YXRpYyByZWYoZSl7cmV0dXJuIG5ldyBSZWZFbGVtZW50KGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBTY3JpcHQoZSl9c3RhdGljIHNldFByb3BlcnR5KGUpe3JldHVybiBuZXcgU2V0UHJvcGVydHkoZSl9c3RhdGljIHNpZ25EYXRhKGUpe3JldHVybiBuZXcgU2lnbkRhdGEoZSl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX1zdGF0aWMgc2lnbmluZyhlKXtyZXR1cm4gbmV3IFNpZ25pbmcoZSl9c3RhdGljIHNvbGlkKGUpe3JldHVybiBuZXcgU29saWQoZSl9c3RhdGljIHNwZWFrKGUpe3JldHVybiBuZXcgU3BlYWsoZSl9c3RhdGljIHN0aXBwbGUoZSl7cmV0dXJuIG5ldyBTdGlwcGxlKGUpfXN0YXRpYyBzdWJmb3JtKGUpe3JldHVybiBuZXcgU3ViZm9ybShlKX1zdGF0aWMgc3ViZm9ybVNldChlKXtyZXR1cm4gbmV3IFN1YmZvcm1TZXQoZSl9c3RhdGljIHN1YmplY3RETihlKXtyZXR1cm4gbmV3IFN1YmplY3RETihlKX1zdGF0aWMgc3ViamVjdEROcyhlKXtyZXR1cm4gbmV3IFN1YmplY3RETnMoZSl9c3RhdGljIHN1Ym1pdChlKXtyZXR1cm4gbmV3IFN1Ym1pdChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZShlKX1zdGF0aWMgdGV4dChlKXtyZXR1cm4gbmV3IFRleHQoZSl9c3RhdGljIHRleHRFZGl0KGUpe3JldHVybiBuZXcgVGV4dEVkaXQoZSl9c3RhdGljIHRpbWUoZSl7cmV0dXJuIG5ldyBUaW1lKGUpfXN0YXRpYyB0aW1lU3RhbXAoZSl7cmV0dXJuIG5ldyBUaW1lU3RhbXAoZSl9c3RhdGljIHRvb2xUaXAoZSl7cmV0dXJuIG5ldyBUb29sVGlwKGUpfXN0YXRpYyB0cmF2ZXJzYWwoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzYWwoZSl9c3RhdGljIHRyYXZlcnNlKGUpe3JldHVybiBuZXcgVHJhdmVyc2UoZSl9c3RhdGljIHVpKGUpe3JldHVybiBuZXcgVWkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbHVlKGUpe3JldHVybiBuZXcgVmFsdWUoZSl9c3RhdGljIHZhcmlhYmxlcyhlKXtyZXR1cm4gbmV3IFZhcmlhYmxlcyhlKX19Y29uc3QgT249Y24uZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBUZXh0KHt9KTt0W2lzXT1lO3JldHVybiB0fWNsYXNzIEJpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnJvb3Q9ZTt0aGlzLmRhdGFzZXRzPWUuZGF0YXNldHM7dGhpcy5kYXRhPWUuZGF0YXNldHM/LmRhdGF8fG5ldyBYbWxPYmplY3QoY24uZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVt1c10oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbZXNdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsaSl7ZVthc109dDtpZihlW2JzXSgpKWlmKHRbTnNdKCkpe2NvbnN0IGk9dFtCc10oKTtlW2VuXShjcmVhdGVUZXh0KGkpKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBGaWVsZCYmIm11bHRpU2VsZWN0Ij09PWUudWk/LmNob2ljZUxpc3Q/Lm9wZW4pe2NvbnN0IGk9dFt1c10oKS5tYXAoKGU9PmVbaXNdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtlbl0oY3JlYXRlVGV4dChpKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbTnNdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6d2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsaSxhKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgcixzO2ZvcihsZXQgYT0wO2E8MzthKyspe3I9aVtFc10oZSwhMSwhMCk7Zm9yKDs7KXtzPXIubmV4dCgpLnZhbHVlO2lmKCFzKWJyZWFrO2lmKHQ9PT1zW05zXSgpKXJldHVybiBzfWlmKGlbWXNdPT09Y24uZGF0YXNldHMuaWQmJiJkYXRhIj09PWlbdnNdKWJyZWFrO2k9aVttc10oKX1pZighYSlyZXR1cm4gbnVsbDtyPXRoaXMuZGF0YVtFc10oZSwhMCwhMSk7cz1yLm5leHQoKS52YWx1ZTtpZihzKXJldHVybiBzO3I9dGhpcy5kYXRhW2dzXShlLCEwKTtzPXIubmV4dCgpLnZhbHVlO3JldHVybiBzPy5bTnNdKCk/czpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOmksdGFyZ2V0OmEsY29ubmVjdGlvbjpyfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKHIpY29udGludWU7aWYoIWkpY29udGludWU7Y29uc3Qgcz1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGksITEsITEpO2lmKCFzKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtpfS5gKTtjb250aW51ZX1jb25zdFtuXT1zO2lmKCFuW0dzXSh0aGlzLmRhdGEpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3Qgbz1zZWFyY2hOb2RlKHRoaXMucm9vdCxlLGEsITEsITEpO2lmKCFvKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHthfS5gKTtjb250aW51ZX1jb25zdFtnXT1vO2lmKCFnW0dzXShlKSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IG11c3QgYmUgYSBwcm9wZXJ0eSBvciBzdWJwcm9wZXJ0eS4iKTtjb250aW51ZX1jb25zdCBjPWdbbXNdKCk7aWYoZyBpbnN0YW5jZW9mIFNldFByb3BlcnR5fHxjIGluc3RhbmNlb2YgU2V0UHJvcGVydHkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZyBpbnN0YW5jZW9mIEJpbmRJdGVtc3x8YyBpbnN0YW5jZW9mIEJpbmRJdGVtcyl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIGJpbmRJdGVtcyBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9Y29uc3QgQz1uW2FuXSgpLGg9Z1t2c107aWYoZyBpbnN0YW5jZW9mIFhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbaF09Qztjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihjKS5jb25zdHJ1Y3RvcixbZV0pO2NbaF09dFtoXX1lbHNlIGlmKGcuaGFzT3duUHJvcGVydHkoaXMpKXtnW2FzXT1uO2dbaXNdPUM7Z1tuc10oKX1lbHNlIHdhcm4oIlhGQSAtIEludmFsaWQgbm9kZSB0byB1c2UgaW4gc2V0UHJvcGVydHkiKX19X2JpbmRJdGVtcyhlLHQpe2lmKCFlLmhhc093blByb3BlcnR5KCJpdGVtcyIpfHwhZS5oYXNPd25Qcm9wZXJ0eSgiYmluZEl0ZW1zIil8fGUuYmluZEl0ZW1zLmlzRW1wdHkoKSlyZXR1cm47Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcy5jaGlsZHJlbillW1pzXSh0KTtlLml0ZW1zLmNsZWFyKCk7Y29uc3QgaT1uZXcgSXRlbXMoe30pLGE9bmV3IEl0ZW1zKHt9KTtlW1ZyXShpKTtlLml0ZW1zLnB1c2goaSk7ZVtWcl0oYSk7ZS5pdGVtcy5wdXNoKGEpO2Zvcihjb25zdHtyZWY6cixsYWJlbFJlZjpzLHZhbHVlUmVmOm4sY29ubmVjdGlvbjpvfW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZihvKWNvbnRpbnVlO2lmKCFyKWNvbnRpbnVlO2NvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxyLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W0dzXSh0aGlzLmRhdGFzZXRzKSl7d2FybihgWEZBIC0gSW52YWxpZCByZWYgKCR7cn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKCFlKXt3YXJuKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke3N9LmApO2NvbnRpbnVlfWNvbnN0W29dPWU7aWYoIW9bR3NdKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgZz1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LG4sITAsITEpO2lmKCFnKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHZhbHVlOiAke259LmApO2NvbnRpbnVlfWNvbnN0W2NdPWc7aWYoIWNbR3NdKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgQz1jcmVhdGVUZXh0KG9bYW5dKCkpLGg9Y3JlYXRlVGV4dChjW2FuXSgpKTtpW1ZyXShDKTtpLnRleHQucHVzaChDKTthW1ZyXShoKTthLnRleHQucHVzaChoKX1lbHNlIHdhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke3J9LmApfX1fYmluZE9jY3VycmVuY2VzKGUsdCxpKXtsZXQgYTtpZih0Lmxlbmd0aD4xKXthPWVbZXNdKCk7YVtac10oYS5vY2N1cik7YS5vY2N1cj1udWxsfXRoaXMuX2JpbmRWYWx1ZShlLHRbMF0saSk7dGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pO3RoaXMuX2JpbmRJdGVtcyhlLHRbMF0pO2lmKDE9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgcj1lW21zXSgpLHM9ZVt2c10sbj1yW0ZzXShlKTtmb3IobGV0IGU9MSxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXSxnPWFbZXNdKCk7cltzXS5wdXNoKGcpO3JbU3NdKG4rZSxnKTt0aGlzLl9iaW5kVmFsdWUoZyxvLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZyxvKTt0aGlzLl9iaW5kSXRlbXMoZyxvKX19X2NyZWF0ZU9jY3VycmVuY2VzKGUpe2lmKCF0aGlzLmVtcHR5TWVyZ2UpcmV0dXJuO2NvbnN0e29jY3VyOnR9PWU7aWYoIXR8fHQuaW5pdGlhbDw9MSlyZXR1cm47Y29uc3QgaT1lW21zXSgpLGE9ZVt2c107aWYoIShpW2FdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpcmV0dXJuO2xldCByO3I9ZS5uYW1lP2lbYV0uY2hpbGRyZW4uZmlsdGVyKCh0PT50Lm5hbWU9PT1lLm5hbWUpKS5sZW5ndGg6aVthXS5jaGlsZHJlbi5sZW5ndGg7Y29uc3Qgcz1pW0ZzXShlKSsxLG49dC5pbml0aWFsLXI7aWYobil7Y29uc3QgdD1lW2VzXSgpO3RbWnNdKHQub2NjdXIpO3Qub2NjdXI9bnVsbDtpW2FdLnB1c2godCk7aVtTc10ocyx0KTtmb3IobGV0IGU9MTtlPG47ZSsrKXtjb25zdCByPXRbZXNdKCk7aVthXS5wdXNoKHIpO2lbU3NdKHMrZSxyKX19fV9nZXRPY2N1ckluZm8oZSl7Y29uc3R7bmFtZTp0LG9jY3VyOml9PWU7aWYoIWl8fCF0KXJldHVyblsxLDFdO2NvbnN0IGE9LTE9PT1pLm1heD8xLzA6aS5tYXg7cmV0dXJuW2kubWluLGFdfV9zZXRBbmRCaW5kKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpO3RoaXMuX2JpbmRJdGVtcyhlLHQpO3RoaXMuX2JpbmRFbGVtZW50KGUsdCl9X2JpbmRFbGVtZW50KGUsdCl7Y29uc3QgaT1bXTt0aGlzLl9jcmVhdGVPY2N1cnJlbmNlcyhlKTtmb3IoY29uc3QgYSBvZiBlW3VzXSgpKXtpZihhW2FzXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PWFbdnNdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PWEubWVyZ2VNb2RlO2NvbnN0IGU9dFt1c10oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W1lzXT09PU9uPy0xOnRbWXNdLGk9YVthc109bmV3IFhtbE9iamVjdChlLGEubmFtZXx8InJvb3QiKTt0W1ZyXShpKTt0aGlzLl9iaW5kRWxlbWVudChhLGkpfWNvbnRpbnVlfWlmKCFhW1JzXSgpKWNvbnRpbnVlO2xldCBlPSExLHI9bnVsbCxzPW51bGwsbj1udWxsO2lmKGEuYmluZCl7c3dpdGNoKGEuYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmU9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighYS5iaW5kLnJlZil7d2FybihgWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgJHthW3ZzXX0uYCk7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfXM9YS5iaW5kLnJlZn1hLmJpbmQucGljdHVyZSYmKHI9YS5iaW5kLnBpY3R1cmVbaXNdKX1jb25zdFtvLGddPXRoaXMuX2dldE9jY3VySW5mbyhhKTtpZihzKXtuPXNlYXJjaE5vZGUodGhpcy5yb290LHQscywhMCwhMSk7aWYobnVsbD09PW4pe249Y3JlYXRlRGF0YU5vZGUodGhpcy5kYXRhLHQscyk7aWYoIW4pY29udGludWU7dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoblt0c109ITApO3RoaXMuX3NldEFuZEJpbmQoYSxuKTtjb250aW51ZX10aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihuPW4uZmlsdGVyKChlPT4hZVt0c10pKSk7bi5sZW5ndGg+Zz9uPW4uc2xpY2UoMCxnKTowPT09bi5sZW5ndGgmJihuPW51bGwpO24mJnRoaXMuX2lzQ29uc3VtZURhdGEoKSYmbi5mb3JFYWNoKChlPT57ZVt0c109ITB9KSl9ZWxzZXtpZighYS5uYW1lKXt0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9aWYodGhpcy5faXNDb25zdW1lRGF0YSgpKXtjb25zdCBpPVtdO2Zvcig7aS5sZW5ndGg8Zzspe2NvbnN0IHI9dGhpcy5fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoYS5uYW1lLGFbYnNdKCksdCxlKTtpZighcilicmVhaztyW3RzXT0hMDtpLnB1c2gocil9bj1pLmxlbmd0aD4wP2k6bnVsbH1lbHNle249dFtFc10oYS5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFuKXtpZigwPT09byl7aS5wdXNoKGEpO2NvbnRpbnVlfWNvbnN0IGU9dFtZc109PT1Pbj8tMTp0W1lzXTtuPWFbYXNdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKG5bdHNdPSEwKTt0W1ZyXShuKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoblt0c109ITApO249W25dfX1uP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLG4scik6bz4wP3RoaXMuX3NldEFuZEJpbmQoYSx0KTppLnB1c2goYSl9aS5mb3JFYWNoKChlPT5lW21zXSgpW1pzXShlKSkpfX1jbGFzcyBEYXRhSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10O3RoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW3VzXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgaT10LmF0KC0xKSxbYSxyXT1pO2lmKGErMT09PXIubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IHM9clsrK2lbMF1dLG49ZS5nZXQoc1tnbl0pO2lmKG4pc1tlbl0obik7ZWxzZXtjb25zdCB0PXNbSXNdKCk7Zm9yKGNvbnN0IGkgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChpW2duXSk7aWYodCl7aVtlbl0odCk7YnJlYWt9fX1jb25zdCBvPXNbdXNdKCk7by5sZW5ndGg+MCYmdC5wdXNoKFstMSxvXSl9Y29uc3QgaT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbdXNdKCkpImRhdGEiIT09ZVt2c10mJmVbbm5dKGkpO3RoaXMuZGF0YVtubl0oaSk7aS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gaS5qb2luKCIiKX19Y29uc3QgUG49Y24uY29uZmlnLmlkO2NsYXNzIEFjcm9iYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFjcm9iYXQ3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiQURCRV9KU0NvbnNvbGUiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBREJFX0pTRGVidWdnZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFkZFNpbGVudFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImFkZFZpZXdlclByZWZlcmVuY2VzIil9fWNsYXNzIEFkanVzdERhdGEgZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYWRqdXN0RGF0YSIpfX1jbGFzcyBBZG9iZUV4dGVuc2lvbkxldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYWdlbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5jb21tb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImFsd2F5c0VtYmVkIil9fWNsYXNzIEFtZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYW1kIil9fWNsYXNzIGNvbmZpZ19BcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJhcmVhIik7dGhpcy5sZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUubGV2ZWwsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9M30pO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiIiwiYmFyY29kZSIsImNvcmVpbml0IiwiZGV2aWNlRHJpdmVyIiwiZm9udCIsImdlbmVyYWwiLCJsYXlvdXQiLCJtZXJnZSIsInNjcmlwdCIsInNpZ25hdHVyZSIsInNvdXJjZVNldCIsInRlbXBsYXRlQ2FjaGUiXSl9fWNsYXNzIEF0dHJpYnV0ZXMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImF1dG9TYXZlIixbImRpc2FibGVkIiwiZW5hYmxlZCJdKX19Y2xhc3MgQmFzZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYmFzZSIpfX1jbGFzcyBCYXRjaE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJiZWhhdmlvck92ZXJyaWRlIil9W25zXSgpe3RoaXNbaXNdPW5ldyBNYXAodGhpc1tpc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUuaW5jbHVkZXMoIjoiKSkpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl9fWNsYXNzIENhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiY2hhbmdlIil9fWNsYXNzIENvbW1vbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiY29tbW9uIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMubWVzc2FnaW5nPW51bGw7dGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsO3RoaXMudGVtcGxhdGU9bnVsbDt0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbDt0aGlzLnZlcnNpb25Db250cm9sPW51bGw7dGhpcy5sb2c9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb21wcmVzcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiY29tcHJlc3MiKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsiaW1hZ2VPbmx5IiwiZG9jdW1lbnQiXSl9fWNsYXNzIENvbXByZXNzTG9naWNhbFN0cnVjdHVyZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiY29tcHJlc3NPYmplY3RTdHJlYW0iKX19Y2xhc3MgQ29tcHJlc3Npb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImNvbXByZXNzaW9uIiwhMCk7dGhpcy5jb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmU9bnVsbDt0aGlzLmNvbXByZXNzT2JqZWN0U3RyZWFtPW51bGw7dGhpcy5sZXZlbD1udWxsO3RoaXMudHlwZT1udWxsfX1jbGFzcyBDb25maWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29uZm9ybWFuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJjb250ZW50Q29weSIpfX1jbGFzcyBDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJjb3BpZXMiLDEsKGU9PmU+PTEpKX19Y2xhc3MgQ3JlYXRvciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImN1cnJlbnRQYWdlIiwwLChlPT5lPj0wKSl9fWNsYXNzIERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImRhdGEiLCEwKTt0aGlzLmFkanVzdERhdGE9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9bnVsbDt0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsO3RoaXMub3V0cHV0WFNMPW51bGw7dGhpcy5yYW5nZT1udWxsO3RoaXMucmVjb3JkPW51bGw7dGhpcy5zdGFydE5vZGU9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMud2luZG93PW51bGw7dGhpcy54c2w9bnVsbDt0aGlzLmV4Y2x1ZGVOUz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmFuc2Zvcm09bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZGVidWciLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBEZWZhdWx0VHlwZWZhY2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJkZWZhdWx0VHlwZWZhY2UiKTt0aGlzLndyaXRpbmdTY3JpcHQ9Z2V0U3RyaW5nT3B0aW9uKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgRGVzdGluYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImRvY3VtZW50QXNzZW1ibHkiKX19Y2xhc3MgRHJpdmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJkcml2ZXIiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIER1cGxleE9wdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBFbWJlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJlbWJlZCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJlbmNyeXB0Iil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbDt0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIEVuY3J5cHRpb25MZXZlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJlbmZvcmNlIil9fWNsYXNzIEVxdWF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZXF1YXRlIik7dGhpcy5mb3JjZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZm9yY2UsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+MD09PWV9KTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIifX1jbGFzcyBFcXVhdGVSYW5nZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGk9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgYSBvZiBpLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe2E9YS5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgaT1lLm1hdGNoKHQpO3JldHVybiBpP3BhcnNlSW50KGlbMV0sMTYpOjB9KSk7MT09PWEubGVuZ3RoJiZhLnB1c2goYVswXSk7ZS5wdXNoKGEpfXJldHVybiBzaGFkb3codGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImV4Y2x1ZGUiKX1bbnNdKCl7dGhpc1tpc109dGhpc1tpc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIEV4Y2x1ZGVOUyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZXhjbHVkZU5TIil9fWNsYXNzIEZsaXBMYWJlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIGNvbmZpZ19Gb250SW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VHlwZWZhY2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubmV2ZXJFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZm9ybUZpZWxkRmlsbGluZyIpfX1jbGFzcyBHcm91cFBhcmVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZ3JvdXBQYXJlbnQiKX19Y2xhc3MgSWZFbXB0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJpbmNsdWRlWERQQ29udGVudCIpfX1jbGFzcyBJbmNyZW1lbnRhbExvYWQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImluY3JlbWVudGFsTG9hZCIsWyJub25lIiwiZm9yd2FyZE9ubHkiXSl9fWNsYXNzIEluY3JlbWVudGFsTWVyZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJpbnRlcmFjdGl2ZSIpfX1jbGFzcyBKb2cgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImpvZyIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm5vbmUiLCJwYWdlU2V0Il0pfX1jbGFzcyBMYWJlbFByaW50ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJsYXlvdXQiLFsicGFnaW5hdGUiLCJwYW5lbCJdKX19Y2xhc3MgTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJsZXZlbCIsMCwoZT0+ZT4wKSl9fWNsYXNzIExpbmVhcml6ZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImxvY2FsZSIpfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImxvY2FsZVNldCIpfX1jbGFzcyBMb2cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIm1hcCIsITApO3RoaXMuZXF1YXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVkaXVtSW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIGNvbmZpZ19NZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJtZXNzYWdpbmciLCEwKTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJtb2RlIixbImFwcGVuZCIsIm92ZXJ3cml0ZSJdKX19Y2xhc3MgTW9kaWZ5QW5ub3RzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIm1vZGlmeUFubm90cyIpfX1jbGFzcyBNc2dJZCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIm9wZW5BY3Rpb24iLCEwKTt0aGlzLmRlc3RpbmF0aW9uPW51bGx9fWNsYXNzIE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwib3V0cHV0IiwhMCk7dGhpcy50bz1udWxsO3RoaXMudHlwZT1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE91dHB1dEJpbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwib3V0cHV0WFNMIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3ZlcnByaW50IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJvdmVycHJpbnQiLFsibm9uZSIsImJvdGgiLCJkcmF3IiwiZmllbGQiXSl9fWNsYXNzIFBhY2tldHMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInBhY2tldHMiKX1bbnNdKCl7IioiIT09dGhpc1tpc10mJih0aGlzW2lzXT10aGlzW2lzXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicGFnZU9mZnNldCIpO3RoaXMueD1nZXRJbnRlZ2VyKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy55PWdldEludGVnZXIoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgUGFnZVJhbmdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwYWdlUmFuZ2UiKX1bbnNdKCl7Y29uc3QgZT10aGlzW2lzXS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKSx0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krPTIpdC5wdXNoKGUuc2xpY2UoaSxpKzIpKTt0aGlzW2lzXT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwY2wiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnBhZ2VPZmZzZXQ9bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicGRmIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5hZG9iZUV4dGVuc2lvbkxldmVsPW51bGw7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuY29tcHJlc3Npb249bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5pbnRlcmFjdGl2ZT1udWxsO3RoaXMubGluZWFyaXplZD1udWxsO3RoaXMub3BlbkFjdGlvbj1udWxsO3RoaXMucGRmYT1udWxsO3RoaXMucHJvZHVjZXI9bnVsbDt0aGlzLnJlbmRlclBvbGljeT1udWxsO3RoaXMuc2NyaXB0TW9kZWw9bnVsbDt0aGlzLnNpbGVudFByaW50PW51bGw7dGhpcy5zdWJtaXRGb3JtYXQ9bnVsbDt0aGlzLnRhZ2dlZD1udWxsO3RoaXMudmVyc2lvbj1udWxsO3RoaXMudmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGZhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicGVybWlzc2lvbnMiLCEwKTt0aGlzLmFjY2Vzc2libGVDb250ZW50PW51bGw7dGhpcy5jaGFuZ2U9bnVsbDt0aGlzLmNvbnRlbnRDb3B5PW51bGw7dGhpcy5kb2N1bWVudEFzc2VtYmx5PW51bGw7dGhpcy5mb3JtRmllbGRGaWxsaW5nPW51bGw7dGhpcy5tb2RpZnlBbm5vdHM9bnVsbDt0aGlzLnBsYWludGV4dE1ldGFkYXRhPW51bGw7dGhpcy5wcmludD1udWxsO3RoaXMucHJpbnRIaWdoUXVhbGl0eT1udWxsfX1jbGFzcyBQaWNrVHJheUJ5UERGU2l6ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwaWNrVHJheUJ5UERGU2l6ZSIpfX1jbGFzcyBjb25maWdfUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicGljdHVyZSIpfX1jbGFzcyBQbGFpbnRleHRNZXRhZGF0YSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBQcmVzZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwcmVzZW50IiwhMCk7dGhpcy5iZWhhdmlvck92ZXJyaWRlPW51bGw7dGhpcy5jYWNoZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy5jb3BpZXM9bnVsbDt0aGlzLmRlc3RpbmF0aW9uPW51bGw7dGhpcy5pbmNyZW1lbnRhbE1lcmdlPW51bGw7dGhpcy5sYXlvdXQ9bnVsbDt0aGlzLm91dHB1dD1udWxsO3RoaXMub3ZlcnByaW50PW51bGw7dGhpcy5wYWdpbmF0aW9uPW51bGw7dGhpcy5wYWdpbmF0aW9uT3ZlcnJpZGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnhkcD1udWxsO3RoaXMuZHJpdmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxhYmVsUHJpbnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGRmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy53ZWJDbGllbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuenBsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicHJpbnQiKX19Y2xhc3MgUHJpbnRIaWdoUXVhbGl0eSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwcmludEhpZ2hRdWFsaXR5Iil9fWNsYXNzIFByaW50U2NhbGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJwcmludGVyTmFtZSIpfX1jbGFzcyBQcm9kdWNlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicHJvZHVjZXIiKX19Y2xhc3MgUHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInJhbmdlIil9W25zXSgpe3RoaXNbaXNdPXRoaXNbaXNdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5lLnNwbGl0KCItIikubWFwKChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpKSkpLmZpbHRlcigoZT0+ZS5ldmVyeSgoZT0+IWlzTmFOKGUpKSkpKS5tYXAoKGU9PnsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTtyZXR1cm4gZX0pKX19Y2xhc3MgUmVjb3JkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwicmVjb3JkIil9W25zXSgpe3RoaXNbaXNdPXRoaXNbaXNdLnRyaW0oKTtjb25zdCBlPXBhcnNlSW50KHRoaXNbaXNdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW2lzXT1lKX19Y2xhc3MgUmVsZXZhbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJyZWxldmFudCIpfVtuc10oKXt0aGlzW2lzXT10aGlzW2lzXS50cmltKCkuc3BsaXQoL1xzKy8pfX1jbGFzcyBSZW5hbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJyZW5hbWUiKX1bbnNdKCl7dGhpc1tpc109dGhpc1tpc10udHJpbSgpOyh0aGlzW2lzXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoInhtbCIpfHxuZXcgUmVnRXhwKCJbXFxwe0x9X11bXFxwe0x9XFxkLl9cXHB7TX0tXSoiLCJ1IikudGVzdCh0aGlzW2lzXSkpJiZ3YXJuKCJYRkEgLSBSZW5hbWU6IGludmFsaWQgWEZBIG5hbWUiKX19Y2xhc3MgUmVuZGVyUG9saWN5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJyZW5kZXJQb2xpY3kiLFsic2VydmVyIiwiY2xpZW50Il0pfX1jbGFzcyBSdW5TY3JpcHRzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBjb25maWdfU2NyaXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJzY3JpcHRNb2RlbCIsWyJYRkEiLCJub25lIl0pfX1jbGFzcyBTZXZlcml0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwic2V2ZXJpdHkiLFsiaWdub3JlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsInRyYWNlIiwid2FybmluZyJdKX19Y2xhc3MgU2lsZW50UHJpbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJzdGFwbGUiKTt0aGlzLm1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubW9kZSxbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIFN0YXJ0Tm9kZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwic3RhcnROb2RlIil9fWNsYXNzIFN0YXJ0UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJzdWJtaXRGb3JtYXQiLFsiaHRtbCIsImRlbGVnYXRlIiwiZmRmIiwieG1sIiwicGRmIl0pfX1jbGFzcyBTdWJtaXRVcmwgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInN1Ym1pdFVybCIpfX1jbGFzcyBTdWJzZXRCZWxvdyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwidGFnZ2VkIil9fWNsYXNzIGNvbmZpZ19UZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInVyaSIpfX1jbGFzcyBjb25maWdfVmFsaWRhdGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbnNdKCl7dGhpc1tpc109dGhpc1tpc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiZG9jUmVhZHkiLCJwb3N0U2lnbiJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIFZhbGlkYXRpb25NZXNzYWdpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInZhbGlkYXRpb25NZXNzYWdpbmciLFsiYWxsTWVzc2FnZXNJbmRpdmlkdWFsbHkiLCJhbGxNZXNzYWdlc1RvZ2V0aGVyIiwiZmlyc3RNZXNzYWdlT25seSIsIm5vTWVzc2FnZXMiXSl9fWNsYXNzIFZlcnNpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiVmVyc2lvbkNvbnRyb2wiKTt0aGlzLm91dHB1dEJlbG93PWdldFN0cmluZ09wdGlvbihlLm91dHB1dEJlbG93LFsid2FybiIsImVycm9yIiwidXBkYXRlIl0pO3RoaXMuc291cmNlQWJvdmU9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQWJvdmUsWyJ3YXJuIiwiZXJyb3IiXSk7dGhpcy5zb3VyY2VCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VCZWxvdyxbInVwZGF0ZSIsIm1haW50YWluIl0pfX1jbGFzcyBWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwidmlld2VyUHJlZmVyZW5jZXMiLCEwKTt0aGlzLkFEQkVfSlNDb25zb2xlPW51bGw7dGhpcy5BREJFX0pTRGVidWdnZXI9bnVsbDt0aGlzLmFkZFZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy5kdXBsZXhPcHRpb249bnVsbDt0aGlzLmVuZm9yY2U9bnVsbDt0aGlzLm51bWJlck9mQ29waWVzPW51bGw7dGhpcy5wYWdlUmFuZ2U9bnVsbDt0aGlzLnBpY2tUcmF5QnlQREZTaXplPW51bGw7dGhpcy5wcmludFNjYWxpbmc9bnVsbH19Y2xhc3MgV2ViQ2xpZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sIndoaXRlc3BhY2UiLFsicHJlc2VydmUiLCJsdHJpbSIsIm5vcm1hbGl6ZSIsInJ0cmltIiwidHJpbSJdKX19Y2xhc3MgV2luZG93IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwid2luZG93Iil9W25zXSgpe2NvbnN0IGU9dGhpc1tpc10udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSk7aWYoZS5zb21lKChlPT5pc05hTihlKSkpKXRoaXNbaXNdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tpc109ZX19fWNsYXNzIFhkYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwieGRjIiwhMCk7dGhpcy51cmk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbSW5dKGUsdCl7aWYoQ29uZmlnTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25maWdOYW1lc3BhY2VbZV0odCl9c3RhdGljIGFjcm9iYXQoZSl7cmV0dXJuIG5ldyBBY3JvYmF0KGUpfXN0YXRpYyBhY3JvYmF0NyhlKXtyZXR1cm4gbmV3IEFjcm9iYXQ3KGUpfXN0YXRpYyBBREJFX0pTQ29uc29sZShlKXtyZXR1cm4gbmV3IEFEQkVfSlNDb25zb2xlKGUpfXN0YXRpYyBBREJFX0pTRGVidWdnZXIoZSl7cmV0dXJuIG5ldyBBREJFX0pTRGVidWdnZXIoZSl9c3RhdGljIGFkZFNpbGVudFByaW50KGUpe3JldHVybiBuZXcgQWRkU2lsZW50UHJpbnQoZSl9c3RhdGljIGFkZFZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgQWRkVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIGFkanVzdERhdGEoZSl7cmV0dXJuIG5ldyBBZGp1c3REYXRhKGUpfXN0YXRpYyBhZG9iZUV4dGVuc2lvbkxldmVsKGUpe3JldHVybiBuZXcgQWRvYmVFeHRlbnNpb25MZXZlbChlKX1zdGF0aWMgYWdlbnQoZSl7cmV0dXJuIG5ldyBBZ2VudChlKX1zdGF0aWMgYWx3YXlzRW1iZWQoZSl7cmV0dXJuIG5ldyBBbHdheXNFbWJlZChlKX1zdGF0aWMgYW1kKGUpe3JldHVybiBuZXcgQW1kKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgY29uZmlnX0FyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25MZXZlbChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25MZXZlbChlKX1zdGF0aWMgZW5mb3JjZShlKXtyZXR1cm4gbmV3IEVuZm9yY2UoZSl9c3RhdGljIGVxdWF0ZShlKXtyZXR1cm4gbmV3IEVxdWF0ZShlKX1zdGF0aWMgZXF1YXRlUmFuZ2UoZSl7cmV0dXJuIG5ldyBFcXVhdGVSYW5nZShlKX1zdGF0aWMgZXhjbHVkZShlKXtyZXR1cm4gbmV3IEV4Y2x1ZGUoZSl9c3RhdGljIGV4Y2x1ZGVOUyhlKXtyZXR1cm4gbmV3IEV4Y2x1ZGVOUyhlKX1zdGF0aWMgZmxpcExhYmVsKGUpe3JldHVybiBuZXcgRmxpcExhYmVsKGUpfXN0YXRpYyBmb250SW5mbyhlKXtyZXR1cm4gbmV3IGNvbmZpZ19Gb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBjb25maWdfTWVzc2FnZShlKX1zdGF0aWMgbWVzc2FnaW5nKGUpe3JldHVybiBuZXcgTWVzc2FnaW5nKGUpfXN0YXRpYyBtb2RlKGUpe3JldHVybiBuZXcgTW9kZShlKX1zdGF0aWMgbW9kaWZ5QW5ub3RzKGUpe3JldHVybiBuZXcgTW9kaWZ5QW5ub3RzKGUpfXN0YXRpYyBtc2dJZChlKXtyZXR1cm4gbmV3IE1zZ0lkKGUpfXN0YXRpYyBuYW1lQXR0cihlKXtyZXR1cm4gbmV3IE5hbWVBdHRyKGUpfXN0YXRpYyBuZXZlckVtYmVkKGUpe3JldHVybiBuZXcgTmV2ZXJFbWJlZChlKX1zdGF0aWMgbnVtYmVyT2ZDb3BpZXMoZSl7cmV0dXJuIG5ldyBOdW1iZXJPZkNvcGllcyhlKX1zdGF0aWMgb3BlbkFjdGlvbihlKXtyZXR1cm4gbmV3IE9wZW5BY3Rpb24oZSl9c3RhdGljIG91dHB1dChlKXtyZXR1cm4gbmV3IE91dHB1dChlKX1zdGF0aWMgb3V0cHV0QmluKGUpe3JldHVybiBuZXcgT3V0cHV0QmluKGUpfXN0YXRpYyBvdXRwdXRYU0woZSl7cmV0dXJuIG5ldyBPdXRwdXRYU0woZSl9c3RhdGljIG92ZXJwcmludChlKXtyZXR1cm4gbmV3IE92ZXJwcmludChlKX1zdGF0aWMgcGFja2V0cyhlKXtyZXR1cm4gbmV3IFBhY2tldHMoZSl9c3RhdGljIHBhZ2VPZmZzZXQoZSl7cmV0dXJuIG5ldyBQYWdlT2Zmc2V0KGUpfXN0YXRpYyBwYWdlUmFuZ2UoZSl7cmV0dXJuIG5ldyBQYWdlUmFuZ2UoZSl9c3RhdGljIHBhZ2luYXRpb24oZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uKGUpfXN0YXRpYyBwYWdpbmF0aW9uT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uT3ZlcnJpZGUoZSl9c3RhdGljIHBhcnQoZSl7cmV0dXJuIG5ldyBQYXJ0KGUpfXN0YXRpYyBwY2woZSl7cmV0dXJuIG5ldyBQY2woZSl9c3RhdGljIHBkZihlKXtyZXR1cm4gbmV3IFBkZihlKX1zdGF0aWMgcGRmYShlKXtyZXR1cm4gbmV3IFBkZmEoZSl9c3RhdGljIHBlcm1pc3Npb25zKGUpe3JldHVybiBuZXcgUGVybWlzc2lvbnMoZSl9c3RhdGljIHBpY2tUcmF5QnlQREZTaXplKGUpe3JldHVybiBuZXcgUGlja1RyYXlCeVBERlNpemUoZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBjb25maWdfUGljdHVyZShlKX1zdGF0aWMgcGxhaW50ZXh0TWV0YWRhdGEoZSl7cmV0dXJuIG5ldyBQbGFpbnRleHRNZXRhZGF0YShlKX1zdGF0aWMgcHJlc2VuY2UoZSl7cmV0dXJuIG5ldyBQcmVzZW5jZShlKX1zdGF0aWMgcHJlc2VudChlKXtyZXR1cm4gbmV3IFByZXNlbnQoZSl9c3RhdGljIHByaW50KGUpe3JldHVybiBuZXcgUHJpbnQoZSl9c3RhdGljIHByaW50SGlnaFF1YWxpdHkoZSl7cmV0dXJuIG5ldyBQcmludEhpZ2hRdWFsaXR5KGUpfXN0YXRpYyBwcmludFNjYWxpbmcoZSl7cmV0dXJuIG5ldyBQcmludFNjYWxpbmcoZSl9c3RhdGljIHByaW50ZXJOYW1lKGUpe3JldHVybiBuZXcgUHJpbnRlck5hbWUoZSl9c3RhdGljIHByb2R1Y2VyKGUpe3JldHVybiBuZXcgUHJvZHVjZXIoZSl9c3RhdGljIHBzKGUpe3JldHVybiBuZXcgUHMoZSl9c3RhdGljIHJhbmdlKGUpe3JldHVybiBuZXcgUmFuZ2UoZSl9c3RhdGljIHJlY29yZChlKXtyZXR1cm4gbmV3IFJlY29yZChlKX1zdGF0aWMgcmVsZXZhbnQoZSl7cmV0dXJuIG5ldyBSZWxldmFudChlKX1zdGF0aWMgcmVuYW1lKGUpe3JldHVybiBuZXcgUmVuYW1lKGUpfXN0YXRpYyByZW5kZXJQb2xpY3koZSl7cmV0dXJuIG5ldyBSZW5kZXJQb2xpY3koZSl9c3RhdGljIHJ1blNjcmlwdHMoZSl7cmV0dXJuIG5ldyBSdW5TY3JpcHRzKGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBjb25maWdfU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19UZW1wbGF0ZShlKX1zdGF0aWMgdGVtcGxhdGVDYWNoZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlQ2FjaGUoZSl9c3RhdGljIHRocmVzaG9sZChlKXtyZXR1cm4gbmV3IFRocmVzaG9sZChlKX1zdGF0aWMgdG8oZSl7cmV0dXJuIG5ldyBUbyhlKX1zdGF0aWMgdHJhY2UoZSl7cmV0dXJuIG5ldyBUcmFjZShlKX1zdGF0aWMgdHJhbnNmb3JtKGUpe3JldHVybiBuZXcgVHJhbnNmb3JtKGUpfXN0YXRpYyB0eXBlKGUpe3JldHVybiBuZXcgVHlwZShlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19WYWxpZGF0ZShlKX1zdGF0aWMgdmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKX1zdGF0aWMgdmFsaWRhdGlvbk1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRpb25NZXNzYWdpbmcoZSl9c3RhdGljIHZlcnNpb24oZSl7cmV0dXJuIG5ldyBWZXJzaW9uKGUpfXN0YXRpYyB2ZXJzaW9uQ29udHJvbChlKXtyZXR1cm4gbmV3IFZlcnNpb25Db250cm9sKGUpfXN0YXRpYyB2aWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyB3ZWJDbGllbnQoZSl7cmV0dXJuIG5ldyBXZWJDbGllbnQoZSl9c3RhdGljIHdoaXRlc3BhY2UoZSl7cmV0dXJuIG5ldyBXaGl0ZXNwYWNlKGUpfXN0YXRpYyB3aW5kb3coZSl7cmV0dXJuIG5ldyBXaW5kb3coZSl9c3RhdGljIHhkYyhlKXtyZXR1cm4gbmV3IFhkYyhlKX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfXN0YXRpYyB4c2woZSl7cmV0dXJuIG5ldyBYc2woZSl9c3RhdGljIHpwbChlKXtyZXR1cm4gbmV3IFpwbChlKX19Y29uc3QgV249Y24uY29ubmVjdGlvblNldC5pZDtjbGFzcyBDb25uZWN0aW9uU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54bWxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzZENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZWZmZWN0aXZlSW5wdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRWZmZWN0aXZlT3V0cHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJlZmZlY3RpdmVPdXRwdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT3BlcmF0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sInJvb3RFbGVtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBY3Rpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sInNvYXBBY3Rpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGNvbm5lY3Rpb25fc2V0X1VyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwidXJpIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ3c2RsQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ4bWxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXJpPW51bGx9fWNsYXNzIFhzZENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sInhzZENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yb290RWxlbWVudD1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIENvbm5lY3Rpb25TZXROYW1lc3BhY2V7c3RhdGljW0luXShlLHQpe2lmKENvbm5lY3Rpb25TZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbm5lY3Rpb25TZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNvbm5lY3Rpb25TZXQoZSl7cmV0dXJuIG5ldyBDb25uZWN0aW9uU2V0KGUpfXN0YXRpYyBlZmZlY3RpdmVJbnB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZUlucHV0UG9saWN5KGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl9c3RhdGljIG9wZXJhdGlvbihlKXtyZXR1cm4gbmV3IE9wZXJhdGlvbihlKX1zdGF0aWMgcm9vdEVsZW1lbnQoZSl7cmV0dXJuIG5ldyBSb290RWxlbWVudChlKX1zdGF0aWMgc29hcEFjdGlvbihlKXtyZXR1cm4gbmV3IFNvYXBBY3Rpb24oZSl9c3RhdGljIHNvYXBBZGRyZXNzKGUpe3JldHVybiBuZXcgU29hcEFkZHJlc3MoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IGNvbm5lY3Rpb25fc2V0X1VyaShlKX1zdGF0aWMgd3NkbEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBXc2RsQWRkcmVzcyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBXc2RsQ29ubmVjdGlvbihlKX1zdGF0aWMgeG1sQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhtbENvbm5lY3Rpb24oZSl9c3RhdGljIHhzZENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYc2RDb25uZWN0aW9uKGUpfX1jb25zdCBqbj1jbi5kYXRhc2V0cy5pZDtjbGFzcyBkYXRhc2V0c19EYXRhIGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpuLCJkYXRhIixlKX1beHNdKCl7cmV0dXJuITB9fWNsYXNzIERhdGFzZXRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpuLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W0tzXShlKXtjb25zdCB0PWVbdnNdOygiZGF0YSI9PT10JiZlW1lzXT09PWpufHwiU2lnbmF0dXJlIj09PXQmJmVbWXNdPT09Y24uc2lnbmF0dXJlLmlkKSYmKHRoaXNbdF09ZSk7dGhpc1tWcl0oZSl9fWNsYXNzIERhdGFzZXRzTmFtZXNwYWNle3N0YXRpY1tJbl0oZSx0KXtpZihEYXRhc2V0c05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gRGF0YXNldHNOYW1lc3BhY2VbZV0odCl9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBkYXRhc2V0c19EYXRhKGUpfX1jb25zdCBYbj1jbi5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJjYWxlbmRhclN5bWJvbHMiLCEwKTt0aGlzLm5hbWU9ImdyZWdvcmlhbiI7dGhpcy5kYXlOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwiY3VycmVuY3lTeW1ib2xzIiwhMCk7dGhpcy5jdXJyZW5jeVN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJkYXRlUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgRGF0ZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgRGF0ZVRpbWVTeW1ib2xzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJkYXlOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZGF5PW5ldyBYRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJlcmEiKX19Y2xhc3MgRXJhTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lcmlkaWVtIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJtb250aE5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5tb250aD1uZXcgWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJudW1iZXJQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBOdW1iZXJQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBOdW1iZXJTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sInRpbWVQYXR0ZXJucyIsITApO3RoaXMudGltZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbiwidHlwZUZhY2UiLCEwKTt0aGlzLm5hbWU9IiJ8ZS5uYW1lfX1jbGFzcyBUeXBlRmFjZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBMb2NhbGVTZXROYW1lc3BhY2V7c3RhdGljW0luXShlLHQpe2lmKExvY2FsZVNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gTG9jYWxlU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjYWxlbmRhclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDYWxlbmRhclN5bWJvbHMoZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9sKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2woZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9scyhlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9scyhlKX1zdGF0aWMgZGF0ZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybihlKX1zdGF0aWMgZGF0ZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm5zKGUpfXN0YXRpYyBkYXRlVGltZVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBEYXRlVGltZVN5bWJvbHMoZSl9c3RhdGljIGRheShlKXtyZXR1cm4gbmV3IERheShlKX1zdGF0aWMgZGF5TmFtZXMoZSl7cmV0dXJuIG5ldyBEYXlOYW1lcyhlKX1zdGF0aWMgZXJhKGUpe3JldHVybiBuZXcgRXJhKGUpfXN0YXRpYyBlcmFOYW1lcyhlKXtyZXR1cm4gbmV3IEVyYU5hbWVzKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGVTZXQoZSl9c3RhdGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgTWVyaWRpZW0oZSl9c3RhdGljIG1lcmlkaWVtTmFtZXMoZSl7cmV0dXJuIG5ldyBNZXJpZGllbU5hbWVzKGUpfXN0YXRpYyBtb250aChlKXtyZXR1cm4gbmV3IE1vbnRoKGUpfXN0YXRpYyBtb250aE5hbWVzKGUpe3JldHVybiBuZXcgTW9udGhOYW1lcyhlKX1zdGF0aWMgbnVtYmVyUGF0dGVybihlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm4oZSl9c3RhdGljIG51bWJlclBhdHRlcm5zKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybnMoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbChlKX1zdGF0aWMgbnVtYmVyU3ltYm9scyhlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbHMoZSl9c3RhdGljIHRpbWVQYXR0ZXJuKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm4oZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJucyhlKX1zdGF0aWMgdHlwZUZhY2UoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZShlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgVHlwZUZhY2VzKGUpfX1jb25zdCBabj1jbi5zaWduYXR1cmUuaWQ7Y2xhc3Mgc2lnbmF0dXJlX1NpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwic2lnbmF0dXJlIiwhMCl9fWNsYXNzIFNpZ25hdHVyZU5hbWVzcGFjZXtzdGF0aWNbSW5dKGUsdCl7aWYoU2lnbmF0dXJlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTaWduYXR1cmVOYW1lc3BhY2VbZV0odCl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IHNpZ25hdHVyZV9TaWduYXR1cmUoZSl9fWNvbnN0IFZuPWNuLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihWbiwic3R5bGVzaGVldCIsITApfX1jbGFzcyBTdHlsZXNoZWV0TmFtZXNwYWNle3N0YXRpY1tJbl0oZSx0KXtpZihTdHlsZXNoZWV0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTdHlsZXNoZWV0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzdHlsZXNoZWV0KGUpe3JldHVybiBuZXcgU3R5bGVzaGVldChlKX19Y29uc3QgX249Y24ueGRwLmlkO2NsYXNzIHhkcF9YZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoX24sInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtxc10oZSl7Y29uc3QgdD1jbltlW3ZzXV07cmV0dXJuIHQmJmVbWXNdPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1tJbl0oZSx0KXtpZihYZHBOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhkcE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgeGRwX1hkcChlKX19Y29uc3Qgem49Y24ueGh0bWwuaWQsJG49U3ltYm9sKCksQW89bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSxlbz1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT5tZWFzdXJlVG9TdHJpbmcoLjk5KihlPXQuZm9udFNpemU9Z2V0TWVhc3VyZW1lbnQoZSkpKV0sWyJsZXR0ZXItc3BhY2luZyIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJsaW5lLWhlaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWJvdHRvbSIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tbGVmdCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tcmlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXRvcCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJ0ZXh0LWluZGVudCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJmb250LWZhbWlseSIsZT0+ZV0sWyJ2ZXJ0aWNhbC1hbGlnbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV1dKSx0bz0vXHMrL2csaW89L1tcclxuXSsvZyxhbz0vXHJcbj8vZztmdW5jdGlvbiBtYXBTdHlsZShlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBhO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbdCxpXW9mIGUuc3BsaXQoIjsiKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpe2NvbnN0IGU9ZW8uZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgcz1pO2UmJihzPSJzdHJpbmciPT10eXBlb2YgZT9lOmUoaSxyKSk7dC5lbmRzV2l0aCgic2NhbGUiKT9hLnRyYW5zZm9ybT1hLnRyYW5zZm9ybT9gJHthW3RdfSAke3N9YDpzOmFbdC5yZXBsYWNlQWxsKC8tKFthLXpBLVpdKS9nLCgoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKSldPXN9YS5mb250RmFtaWx5JiZzZXRGb250RmFtaWx5KHt0eXBlZmFjZTphLmZvbnRGYW1pbHksd2VpZ2h0OmEuZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTphLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTpyLmZvbnRTaXplfHwwfSx0LHRbd3NdLmZvbnRGaW5kZXIsYSk7aWYoaSYmYS52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PWEudmVydGljYWxBbGlnbiYmYS5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxpPWdldE1lYXN1cmVtZW50KGEuZm9udFNpemUpO2EuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKGkqZSk7YS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyhNYXRoLnNpZ24oZ2V0TWVhc3VyZW1lbnQoYS52ZXJ0aWNhbEFsaWduKSkqaSp0KX1pJiZhLmZvbnRTaXplJiYoYS5mb250U2l6ZT1gY2FsYygke2EuZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTtmaXhUZXh0SW5kZW50KGEpO3JldHVybiBhfWNvbnN0IHJvPW5ldyBTZXQoWyJib2R5IiwiaHRtbCJdKTtjbGFzcyBYaHRtbE9iamVjdCBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHpuLHQpO3RoaXNbJG5dPSExO3RoaXMuc3R5bGU9ZS5zdHlsZXx8IiJ9W3pyXShlKXtzdXBlclt6cl0oZSk7dGhpcy5zdHlsZT1mdW5jdGlvbiBjaGVja1N0eWxlKGUpe3JldHVybiBlLnN0eWxlP2Uuc3R5bGUudHJpbSgpLnNwbGl0KC9ccyo7XHMqLykuZmlsdGVyKChlPT4hIWUpKS5tYXAoKGU9PmUuc3BsaXQoL1xzKjpccyovLDIpKSkuZmlsdGVyKCgoW3QsaV0pPT57ImZvbnQtZmFtaWx5Ij09PXQmJmVbd3NdLnVzZWRUeXBlZmFjZXMuYWRkKGkpO3JldHVybiBBby5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W1hyXSgpe3JldHVybiFyby5oYXModGhpc1t2c10pfVtPc10oZSx0PSExKXtpZih0KXRoaXNbJG5dPSEwO2Vsc2V7ZT1lLnJlcGxhY2VBbGwoaW8sIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlQWxsKHRvLCIgIikpfWUmJih0aGlzW2lzXSs9ZSl9W1dzXShlLHQ9ITApe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgcj1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6aS50eXBlZmFjZT1zdHJpcFF1b3Rlcyh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6aS5zaXplPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmkud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjppLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjppLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOmEudG9wPWEuYm90dG9tPWEubGVmdD1hLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOmEudG9wPWEuYm90dG9tPWVbMF07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6YS50b3A9ZVswXTthLmJvdHRvbT1lWzJdO2EubGVmdD1hLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0OmEudG9wPWVbMF07YS5sZWZ0PWVbMV07YS5ib3R0b209ZVsyXTthLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjphLnRvcD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOmEuYm90dG9tPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOmEubGVmdD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6YS5yaWdodD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjpyPWdldE1lYXN1cmVtZW50KHQpfWUucHVzaERhdGEoaSxhLHIpO2lmKHRoaXNbaXNdKWUuYWRkU3RyaW5nKHRoaXNbaXNdKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbdXNdKCkpIiN0ZXh0IiE9PXRbdnNdP3RbV3NdKGUpOmUuYWRkU3RyaW5nKHRbaXNdKTt0JiZlLnBvcEZvbnQoKX1bc25dKGUpe2NvbnN0IHQ9W107dGhpc1tzc109e2NoaWxkcmVuOnR9O3RoaXNbX3JdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW2lzXSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgaTtpPXRoaXNbJG5dP3RoaXNbaXNdP3RoaXNbaXNdLnJlcGxhY2VBbGwoYW8sIlxuIik6dm9pZCAwOnRoaXNbaXNdfHx2b2lkIDA7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW3ZzXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1skbl0pfSxjaGlsZHJlbjp0LHZhbHVlOml9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9Zml4VVJMKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtXc10oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pO3N1cGVyW1dzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bc25dKGUpe2NvbnN0IHQ9c3VwZXJbc25dKGUpLHtodG1sOml9PXQ7aWYoIWkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aS5uYW1lPSJkaXYiO2kuYXR0cmlidXRlcy5jbGFzcz1bInhmYVJpY2giXTtyZXR1cm4gdH19Y2xhc3MgQnIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiciIpfVthbl0oKXtyZXR1cm4iXG4ifVtXc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3NuXShlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bc25dKGUpe2NvbnN0IHQ9W107dGhpc1tzc109e2NoaWxkcmVuOnR9O3RoaXNbX3JdKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tpc118fCIifSk7aWYoMT09PXQubGVuZ3RoKXtjb25zdCBlPXRbMF07aWYoZS5hdHRyaWJ1dGVzPy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sY2hpbGRyZW46dH0pfX1jbGFzcyBJIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaSIpfVtXc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW1dzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W1dzXShlKXtzdXBlcltXc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W2FuXSgpe3JldHVybiB0aGlzW21zXSgpW3VzXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbYW5dKCk6c3VwZXJbYW5dKCkrIlxuIn19Y2xhc3MgU3BhbiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInNwYW4iKX19Y2xhc3MgU3ViIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3ViIil9fWNsYXNzIFN1cCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1cCIpfX1jbGFzcyBVbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInVsIil9fWNsYXNzIFhodG1sTmFtZXNwYWNle3N0YXRpY1tJbl0oZSx0KXtpZihYaHRtbE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGh0bWxOYW1lc3BhY2VbZV0odCl9c3RhdGljIGEoZSl7cmV0dXJuIG5ldyBBKGUpfXN0YXRpYyBiKGUpe3JldHVybiBuZXcgQihlKX1zdGF0aWMgYm9keShlKXtyZXR1cm4gbmV3IEJvZHkoZSl9c3RhdGljIGJyKGUpe3JldHVybiBuZXcgQnIoZSl9c3RhdGljIGh0bWwoZSl7cmV0dXJuIG5ldyBIdG1sKGUpfXN0YXRpYyBpKGUpe3JldHVybiBuZXcgSShlKX1zdGF0aWMgbGkoZSl7cmV0dXJuIG5ldyBMaShlKX1zdGF0aWMgb2woZSl7cmV0dXJuIG5ldyBPbChlKX1zdGF0aWMgcChlKXtyZXR1cm4gbmV3IFAoZSl9c3RhdGljIHNwYW4oZSl7cmV0dXJuIG5ldyBTcGFuKGUpfXN0YXRpYyBzdWIoZSl7cmV0dXJuIG5ldyBTdWIoZSl9c3RhdGljIHN1cChlKXtyZXR1cm4gbmV3IFN1cChlKX1zdGF0aWMgdWwoZSl7cmV0dXJuIG5ldyBVbChlKX19Y29uc3Qgc289e2NvbmZpZzpDb25maWdOYW1lc3BhY2UsY29ubmVjdGlvbjpDb25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOkRhdGFzZXRzTmFtZXNwYWNlLGxvY2FsZVNldDpMb2NhbGVTZXROYW1lc3BhY2Usc2lnbmF0dXJlOlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OlN0eWxlc2hlZXROYW1lc3BhY2UsdGVtcGxhdGU6VGVtcGxhdGVOYW1lc3BhY2UseGRwOlhkcE5hbWVzcGFjZSx4aHRtbDpYaHRtbE5hbWVzcGFjZX07Y2xhc3MgVW5rbm93bk5hbWVzcGFjZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWVzcGFjZUlkPWV9W0luXShlLHQpe3JldHVybiBuZXcgWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19Y2xhc3MgUm9vdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigtMSwicm9vdCIsT2JqZWN0LmNyZWF0ZShudWxsKSk7dGhpcy5lbGVtZW50PW51bGw7dGhpc1tEc109ZX1bS3NdKGUpe3RoaXMuZWxlbWVudD1lO3JldHVybiEwfVtuc10oKXtzdXBlcltuc10oKTtpZih0aGlzLmVsZW1lbnQudGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZSl7dGhpc1tEc10uc2V0KFZzLHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW19zXSh0aGlzW0RzXSk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW0RzXT10aGlzW0RzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLTEsIiIsT2JqZWN0LmNyZWF0ZShudWxsKSl9W0tzXShlKXtyZXR1cm4hMX19Y2xhc3MgQnVpbGRlcntjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX25hbWVzcGFjZVN0YWNrPVtdO3RoaXMuX25zQWdub3N0aWNMZXZlbD0wO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzPW5ldyBNYXA7dGhpcy5fbmFtZXNwYWNlcz1uZXcgTWFwO3RoaXMuX25leHROc0lkPU1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoY24pLm1hcCgoKHtpZDplfSk9PmUpKSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT1lfHxuZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKHtuc1ByZWZpeDplLG5hbWU6dCxhdHRyaWJ1dGVzOmksbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pe2NvbnN0IHM9bnVsbCE9PWE7aWYocyl7dGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKX1yJiZ0aGlzLl9hZGROYW1lc3BhY2VQcmVmaXgocik7aWYoaS5oYXNPd25Qcm9wZXJ0eShUcykpe2NvbnN0IGU9c28uZGF0YXNldHMsdD1pW1RzXTtsZXQgYT1udWxsO2Zvcihjb25zdFtpLHJdb2YgT2JqZWN0LmVudHJpZXModCkpe2lmKHRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGkpPT09ZSl7YT17eGZhOnJ9O2JyZWFrfX1hP2lbVHNdPWE6ZGVsZXRlIGlbVHNdfWNvbnN0IG49dGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoZSksbz1uPy5bSW5dKHQsaSl8fG5ldyBFbXB0eTtvW3hzXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoc3x8cnx8b1t4c10oKSkmJihvW0FzXT17aGFzTmFtZXNwYWNlOnMscHJlZml4ZXM6cixuc0Fnbm9zdGljOm9beHNdKCl9KTtyZXR1cm4gb31pc05zQWdub3N0aWMoKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9X3NlYXJjaE5hbWVzcGFjZShlKXtsZXQgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcihjb25zdFtpLHtjaGVjazphfV1vZiBPYmplY3QuZW50cmllcyhjbikpaWYoYShlKSl7dD1zb1tpXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCk7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1fYWRkTmFtZXNwYWNlUHJlZml4KGUpe2Zvcihjb25zdHtwcmVmaXg6dCx2YWx1ZTppfW9mIGUpe2NvbnN0IGU9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGkpO2xldCBhPXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldCh0KTtpZighYSl7YT1bXTt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5zZXQodCxhKX1hLnB1c2goZSl9fV9nZXROYW1lc3BhY2VUb1VzZShlKXtpZighZSlyZXR1cm4gdGhpcy5fY3VycmVudE5hbWVzcGFjZTtjb25zdCB0PXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKTtpZih0Py5sZW5ndGg+MClyZXR1cm4gdC5hdCgtMSk7d2FybihgVW5rbm93biBuYW1lc3BhY2UgcHJlZml4OiAke2V9LmApO3JldHVybiBudWxsfWNsZWFuKGUpe2NvbnN0e2hhc05hbWVzcGFjZTp0LHByZWZpeGVzOmksbnNBZ25vc3RpYzphfT1lO3QmJih0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX25hbWVzcGFjZVN0YWNrLnBvcCgpKTtpJiZpLmZvckVhY2goKCh7cHJlZml4OmV9KT0+e3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKS5wb3AoKX0pKTthJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwtLX19Y2xhc3MgWEZBUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBCdWlsZGVyKGUpO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2dsb2JhbERhdGE9e3VzZWRUeXBlZmFjZXM6bmV3IFNldH07dGhpcy5faWRzPW5ldyBNYXA7dGhpcy5fY3VycmVudD10aGlzLl9idWlsZGVyLmJ1aWxkUm9vdCh0aGlzLl9pZHMpO3RoaXMuX2Vycm9yQ29kZT14cjt0aGlzLl93aGl0ZVJlZ2V4PS9eXHMrJC87dGhpcy5fbmJzcHM9L1x4YTArL2c7dGhpcy5fcmljaFRleHQ9dH1wYXJzZShlKXt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZT09PXhyKXt0aGlzLl9jdXJyZW50W25zXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtYcl0oKT90aGlzLl9jdXJyZW50W09zXShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbT3NdKGUudHJpbSgpKX1vbkNkYXRhKGUpe3RoaXMuX2N1cnJlbnRbT3NdKGUpfV9ta0F0dHJpYnV0ZXMoZSx0KXtsZXQgaT1udWxsLGE9bnVsbDtjb25zdCByPU9iamVjdC5jcmVhdGUoe30pO2Zvcihjb25zdHtuYW1lOnMsdmFsdWU6bn1vZiBlKWlmKCJ4bWxucyI9PT1zKWk/d2FybihgWEZBIC0gbXVsdGlwbGUgbmFtZXNwYWNlIGRlZmluaXRpb24gaW4gPCR7dH0+YCk6aT1uO2Vsc2UgaWYocy5zdGFydHNXaXRoKCJ4bWxuczoiKSl7Y29uc3QgZT1zLnN1YnN0cmluZyg2KTthfHwoYT1bXSk7YS5wdXNoKHtwcmVmaXg6ZSx2YWx1ZTpufSl9ZWxzZXtjb25zdCBlPXMuaW5kZXhPZigiOiIpO2lmKC0xPT09ZSlyW3NdPW47ZWxzZXtsZXQgdD1yW1RzXTt0fHwodD1yW1RzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFtpLGFdPVtzLnNsaWNlKDAsZSkscy5zbGljZShlKzEpXTsodFtpXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW2FdPW59fXJldHVybltpLGEscl19X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBpPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09aT9bZSxudWxsXTpbZS5zdWJzdHJpbmcoaSsxKSx0PyIiOmUuc3Vic3RyaW5nKDAsaSldfW9uQmVnaW5FbGVtZW50KGUsdCxpKXtjb25zdFthLHIsc109dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW24sb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGc9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOm4sYXR0cmlidXRlczpzLG5hbWVzcGFjZTphLHByZWZpeGVzOnJ9KTtnW3dzXT10aGlzLl9nbG9iYWxEYXRhO2lmKGkpe2dbbnNdKCk7dGhpcy5fY3VycmVudFtLc10oZykmJmdbJHNdKHRoaXMuX2lkcyk7Z1t6cl0odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9Z319b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W2tzXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbaXNdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGk9ZS5wYXJzZSh0W2lzXSk7dFtpc109bnVsbDt0W0tzXShpKX10W25zXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtLc10odCkmJnRbJHNdKHRoaXMuX2lkcyk7dFt6cl0odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3dzXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiB0aGlzLnJvb3QmJnRoaXMuZm9ybX1fY3JlYXRlUGFnZXNIZWxwZXIoKXtjb25zdCBlPXRoaXMuZm9ybVtybl0oKTtyZXR1cm4gbmV3IFByb21pc2UoKCh0LGkpPT57Y29uc3QgbmV4dEl0ZXJhdGlvbj0oKT0+e3RyeXtjb25zdCBpPWUubmV4dCgpO2kuZG9uZT90KGkudmFsdWUpOnNldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX1jYXRjaChlKXtpKGUpfX07c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfSkpfWFzeW5jIF9jcmVhdGVQYWdlcygpe3RyeXt0aGlzLnBhZ2VzPWF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzSGVscGVyKCk7dGhpcy5kaW1zPXRoaXMucGFnZXMuY2hpbGRyZW4ubWFwKChlPT57Y29uc3R7d2lkdGg6dCxoZWlnaHQ6aX09ZS5hdHRyaWJ1dGVzLnN0eWxlO3JldHVyblswLDAscGFyc2VJbnQodCkscGFyc2VJbnQoaSldfSkpfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICR7ZX1gKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7cmV0dXJuIHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVt3c10uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3dzXS5mb250RmluZGVyPW5ldyBGb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVt3c10udXNlZFR5cGVmYWNlcyl7ZT1zdHJpcFF1b3RlcyhlKTt0aGlzLmZvcm1bd3NdLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVt3c10uZm9udEZpbmRlci5hZGQoZSx0KX1hc3luYyBnZXRQYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y29uc3QgZT10aGlzLnBhZ2VzO3RoaXMucGFnZXM9bnVsbDtyZXR1cm4gZX1zZXJpYWxpemVEYXRhKGUpe3JldHVybiB0aGlzLmRhdGFIYW5kbGVyLnNlcmlhbGl6ZShlKX1zdGF0aWMgX2NyZWF0ZURvY3VtZW50KGUpe3JldHVybiBlWyIveGRwOnhkcCJdP09iamVjdC52YWx1ZXMoZSkuam9pbigiIik6ZVsieGRwOnhkcCJdfXN0YXRpYyBnZXRSaWNoVGV4dEFzSHRtbChlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXtsZXQgdD1uZXcgWEZBUGFyc2VyKFhodG1sTmFtZXNwYWNlLCEwKS5wYXJzZShlKTtpZighWyJib2R5IiwieGh0bWwiXS5pbmNsdWRlcyh0W3ZzXSkpe2NvbnN0IGU9WGh0bWxOYW1lc3BhY2UuYm9keSh7fSk7ZVtWcl0odCk7dD1lfWNvbnN0IGk9dFtzbl0oKTtpZighaS5zdWNjZXNzKXJldHVybiBudWxsO2NvbnN0e2h0bWw6YX09aSx7YXR0cmlidXRlczpyfT1hO2lmKHIpe3IuY2xhc3MmJihyLmNsYXNzPXIuY2xhc3MuZmlsdGVyKChlPT4hZS5zdGFydHNXaXRoKCJ4ZmEiKSkpKTtyLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6YSxzdHI6dFthbl0oKX19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgb2YgcmljaCB0ZXh0OiAke2V9YCl9cmV0dXJuIG51bGx9fWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGVHbG9iYWxzKGUpe3JldHVybiBQcm9taXNlLmFsbChbZS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGUuZW5zdXJlRG9jKCJ4ZmFEYXRhc2V0cyIpLGUuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKSxlLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxlLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIildKS50aGVuKCgoW3QsaSxhLHIsc10pPT4oe3BkZk1hbmFnZXI6ZSxhY3JvRm9ybTp0IGluc3RhbmNlb2YgRGljdD90OkRpY3QuZW1wdHkseGZhRGF0YXNldHM6aSxzdHJ1Y3RUcmVlUm9vdDphLGJhc2VVcmw6cixhdHRhY2htZW50czpzfSkpLChlPT57d2FybihgY3JlYXRlR2xvYmFsczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpfXN0YXRpYyBhc3luYyBjcmVhdGUoZSx0LGksYSxyLHMpe2NvbnN0IG49cj9hd2FpdCB0aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGkucGRmTWFuYWdlcik6bnVsbDtyZXR1cm4gaS5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfY3JlYXRlIixbZSx0LGksYSxyLG4sc10pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsKXtjb25zdCBvPWUuZmV0Y2hJZlJlZih0KTtpZighKG8gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3R7YWNyb0Zvcm06ZyxwZGZNYW5hZ2VyOmN9PWksQz10IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHthLmNyZWF0ZU9iaklkKCl9YDtsZXQgaD1vLmdldCgiU3VidHlwZSIpO2g9aCBpbnN0YW5jZW9mIE5hbWU/aC5uYW1lOm51bGw7Y29uc3QgbD17eHJlZjplLHJlZjp0LGRpY3Q6byxzdWJ0eXBlOmgsaWQ6Qyxhbm5vdGF0aW9uR2xvYmFsczppLGNvbGxlY3RGaWVsZHM6cixuZWVkQXBwZWFyYW5jZXM6IXImJiEwPT09Zy5nZXQoIk5lZWRBcHBlYXJhbmNlcyIpLHBhZ2VJbmRleDpzLGV2YWx1YXRvck9wdGlvbnM6Yy5ldmFsdWF0b3JPcHRpb25zLHBhZ2VSZWY6bn07c3dpdGNoKGgpe2Nhc2UiTGluayI6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbihsKTtjYXNlIlRleHQiOnJldHVybiBuZXcgVGV4dEFubm90YXRpb24obCk7Y2FzZSJXaWRnZXQiOmxldCBlPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6byxrZXk6IkZUIn0pO2U9ZSBpbnN0YW5jZW9mIE5hbWU/ZS5uYW1lOm51bGw7c3dpdGNoKGUpe2Nhc2UiVHgiOnJldHVybiBuZXcgVGV4dFdpZGdldEFubm90YXRpb24obCk7Y2FzZSJCdG4iOnJldHVybiBuZXcgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbihsKTtjYXNlIkNoIjpyZXR1cm4gbmV3IENob2ljZVdpZGdldEFubm90YXRpb24obCk7Y2FzZSJTaWciOnJldHVybiBuZXcgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbihsKX13YXJuKGBVbmltcGxlbWVudGVkIHdpZGdldCBmaWVsZCB0eXBlICIke2V9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgZmllbGQgdHlwZS5gKTtyZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb24obCk7Y2FzZSJQb3B1cCI6cmV0dXJuIG5ldyBQb3B1cEFubm90YXRpb24obCk7Y2FzZSJGcmVlVGV4dCI6cmV0dXJuIG5ldyBGcmVlVGV4dEFubm90YXRpb24obCk7Y2FzZSJMaW5lIjpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uKGwpO2Nhc2UiU3F1YXJlIjpyZXR1cm4gbmV3IFNxdWFyZUFubm90YXRpb24obCk7Y2FzZSJDaXJjbGUiOnJldHVybiBuZXcgQ2lyY2xlQW5ub3RhdGlvbihsKTtjYXNlIlBvbHlMaW5lIjpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbihsKTtjYXNlIlBvbHlnb24iOnJldHVybiBuZXcgUG9seWdvbkFubm90YXRpb24obCk7Y2FzZSJDYXJldCI6cmV0dXJuIG5ldyBDYXJldEFubm90YXRpb24obCk7Y2FzZSJJbmsiOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbihsKTtjYXNlIkhpZ2hsaWdodCI6cmV0dXJuIG5ldyBIaWdobGlnaHRBbm5vdGF0aW9uKGwpO2Nhc2UiVW5kZXJsaW5lIjpyZXR1cm4gbmV3IFVuZGVybGluZUFubm90YXRpb24obCk7Y2FzZSJTcXVpZ2dseSI6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb24obCk7Y2FzZSJTdHJpa2VPdXQiOnJldHVybiBuZXcgU3RyaWtlT3V0QW5ub3RhdGlvbihsKTtjYXNlIlN0YW1wIjpyZXR1cm4gbmV3IFN0YW1wQW5ub3RhdGlvbihsKTtjYXNlIkZpbGVBdHRhY2htZW50IjpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbihsKTtkZWZhdWx0OnJ8fHdhcm4oaD9gVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7aH0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmA6IkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIik7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKGwpfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsaSl7dHJ5e2NvbnN0IGE9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuLTE7Y29uc3Qgcj1hLmdldFJhdygiUCIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpdHJ5e3JldHVybiBhd2FpdCBpLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3JdKX1jYXRjaChlKXtpbmZvKGBfZ2V0UGFnZUluZGV4IC0tIG5vdCBhIHZhbGlkIHBhZ2UgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYS5oYXMoIktpZHMiKSlyZXR1cm4tMTtjb25zdCBzPWF3YWl0IGkuZW5zdXJlRG9jKCJudW1QYWdlcyIpO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IGE9YXdhaXQgaS5nZXRQYWdlKGUpLHI9YXdhaXQgaS5lbnN1cmUoYSwiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgaSBvZiByKWlmKGkgaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKGksdCkpcmV0dXJuIGV9fWNhdGNoKGUpe3dhcm4oYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKX1yZXR1cm4tMX1zdGF0aWMgZ2VuZXJhdGVJbWFnZXMoZSx0LGkpe2lmKCFpKXt3YXJuKCJnZW5lcmF0ZUltYWdlczogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGNhbm5vdCBzYXZlIG9yIHByaW50IHNvbWUgYW5ub3RhdGlvbnMgd2l0aCBpbWFnZXMuIik7cmV0dXJuIG51bGx9bGV0IGE7Zm9yKGNvbnN0e2JpdG1hcElkOmksYml0bWFwOnJ9b2YgZSlpZihyKXthfHw9bmV3IE1hcDthLnNldChpLFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVJbWFnZShyLHQpKX1yZXR1cm4gYX1zdGF0aWMgYXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxpLGEpe2NvbnN0IHI9ZS54cmVmO2xldCBzO2NvbnN0IG49W10sbz1bXSx7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6Z309ZS5vcHRpb25zO2Zvcihjb25zdCBjIG9mIGkpaWYoIWMuZGVsZXRlZClzd2l0Y2goYy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBkOmlmKCFzKXtjb25zdCBlPW5ldyBEaWN0KHIpO2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJUeXBlMSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtzPXIuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQgd3JpdGVPYmplY3QocyxlLHQscik7bi5wdXNoKHtyZWY6cyxkYXRhOnQuam9pbigiIil9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4se2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpzfSkpO2JyZWFrO2Nhc2UgZjpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihyLGMsbikpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4pKTticmVhaztjYXNlIG06by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihyLGMsbikpO2JyZWFrO2Nhc2UgcDppZighZylicmVhaztjb25zdCBpPWF3YWl0IGEuZ2V0KGMuYml0bWFwSWQpO2lmKGkuaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06dH09aSxhPVtdO2lmKHQpe2NvbnN0IGk9ci5nZXROZXdUZW1wb3JhcnlSZWYoKTthd2FpdCB3cml0ZU9iamVjdChpLHQsYSxyKTtuLnB1c2goe3JlZjppLGRhdGE6YS5qb2luKCIiKX0pO2UuZGljdC5zZXQoIlNNYXNrIixpKTthLmxlbmd0aD0wfWNvbnN0IHM9aS5pbWFnZVJlZj1yLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0IHdyaXRlT2JqZWN0KHMsZSxhLHIpO24ucHVzaCh7cmVmOnMsZGF0YTphLmpvaW4oIiIpfSk7aS5pbWFnZVN0cmVhbT1pLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHIsYyxuLHtpbWFnZTppfSkpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChvKSxkZXBlbmRlbmNpZXM6bn19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGksYSxyKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOnMseHJlZjpufT10LG89W107Zm9yKGNvbnN0IGcgb2YgYSlpZighZy5kZWxldGVkKXN3aXRjaChnLmFubm90YXRpb25UeXBlKXtjYXNlIGQ6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvcjp0LHRhc2s6aSxldmFsdWF0b3JPcHRpb25zOnN9KSk7YnJlYWs7Y2FzZSBmOmcucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtldmFsdWF0b3JPcHRpb25zOnN9KSk7YnJlYWs7Y2FzZSBwOmlmKCFzLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKWJyZWFrO2NvbnN0IGE9YXdhaXQgci5nZXQoZy5iaXRtYXBJZCk7aWYoYS5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLEMsaF09aS5zbGljZShlLGUrOCksbD1NYXRoLm1pbihyLG4sZyxDKSxRPU1hdGgubWF4KHIsbixnLEMpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKGw8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW2wsdSxRLHUsbCxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IHI9dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKHIpO3RoaXMuc2V0Um90YXRpb24ocix0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBzPSEhKHRoaXMuZmxhZ3MmdEEpLG49ISEodGhpcy5mbGFncyZpQSk7aWYoYS5zdHJ1Y3RUcmVlUm9vdCl7bGV0IGk9dC5nZXQoIlN0cnVjdFBhcmVudCIpO2k9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX10aGlzLmRhdGE9e2Fubm90YXRpb25GbGFnczp0aGlzLmZsYWdzLGJvcmRlclN0eWxlOnRoaXMuYm9yZGVyU3R5bGUsY29sb3I6dGhpcy5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6dGhpcy5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6dGhpcy5ib3JkZXJDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLGNvbnRlbnRzT2JqOnRoaXMuX2NvbnRlbnRzLGhhc0FwcGVhcmFuY2U6ISF0aGlzLmFwcGVhcmFuY2UsaWQ6ZS5pZCxtb2RpZmljYXRpb25EYXRlOnRoaXMubW9kaWZpY2F0aW9uRGF0ZSxyZWN0OnRoaXMucmVjdGFuZ2xlLHN1YnR5cGU6ZS5zdWJ0eXBlLGhhc093bkNhbnZhczohMSxub1JvdGF0ZTohISh0aGlzLmZsYWdzJkFBKSxub0hUTUw6cyYmbn07aWYoZS5jb2xsZWN0RmllbGRzKXtjb25zdCBhPXQuZ2V0KCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShhKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBhKXQgaW5zdGFuY2VvZiBSZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoaSx0LGZBKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLF8pJiYhdGhpcy5faGFzRmxhZyhlLGVBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSwkKSYmIXRoaXMuX2hhc0ZsYWcoZSx6KSYmIXRoaXMuX2hhc0ZsYWcoZSxfKX1tdXN0QmVWaWV3ZWQoZSx0KXtjb25zdCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ZpZXc7cmV0dXJuIHZvaWQgMCE9PWk/IWk6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyx6KX1tdXN0QmVQcmludGVkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vUHJpbnQ7cmV0dXJuIHZvaWQgMCE9PXQ/IXQ6dGhpcy5wcmludGFibGV9Z2V0IHZpZXdhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX1nZXQgcHJpbnRhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDAhPT10aGlzLmZsYWdzJiZ0aGlzLl9pc1ByaW50YWJsZSh0aGlzLmZsYWdzKSl9X3BhcnNlU3RyaW5nSGVscGVyKGUpe2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOiIiO3JldHVybntzdHI6dCxkaXI6dCYmInJ0bCI9PT1iaWRpKHQpLmRpcj8icnRsIjoibHRyIn19c2V0RGVmYXVsdEFwcGVhcmFuY2UoZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWUsYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEQSJ9KXx8aS5hY3JvRm9ybS5nZXQoIkRBIik7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9InN0cmluZyI9PXR5cGVvZiBhP2E6IiI7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MDt0aGlzLmZsYWdzJl8mJiJBbm5vdGF0aW9uIiE9PXRoaXMuY29uc3RydWN0b3IubmFtZSYmKHRoaXMuZmxhZ3NePV8pfWhhc0ZsYWcoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxlKX1zZXRSZWN0YW5nbGUoZSl7dGhpcy5yZWN0YW5nbGU9bG9va3VwTm9ybWFsUmVjdChlLFswLDAsMCwwXSl9c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgaT1lW3RdO2lmKGkgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChpLm5hbWUpe2Nhc2UiTm9uZSI6Y29udGludWU7Y2FzZSJTcXVhcmUiOmNhc2UiQ2lyY2xlIjpjYXNlIkRpYW1vbmQiOmNhc2UiT3BlbkFycm93IjpjYXNlIkNsb3NlZEFycm93IjpjYXNlIkJ1dHQiOmNhc2UiUk9wZW5BcnJvdyI6Y2FzZSJSQ2xvc2VkQXJyb3ciOmNhc2UiU2xhc2giOnRoaXMubGluZUVuZGluZ3NbdF09aS5uYW1lO2NvbnRpbnVlfXdhcm4oYElnbm9yaW5nIGludmFsaWQgbGluZUVuZGluZzogJHtpfWApfX1zZXRSb3RhdGlvbihlLHQpe3RoaXMucm90YXRpb249MDtsZXQgaT1lIGluc3RhbmNlb2YgRGljdD9lLmdldCgiUiIpfHwwOnQuZ2V0KCJSb3RhdGUiKXx8MDtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpJiYwIT09aSl7aSU9MzYwO2k8MCYmKGkrPTM2MCk7aSU5MD09MCYmKHRoaXMucm90YXRpb249aSl9fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMuYm9yZGVyQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkMiKSxudWxsKTt0aGlzLmJhY2tncm91bmRDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCRyIpLG51bGwpfWVsc2UgdGhpcy5ib3JkZXJDb2xvcj10aGlzLmJhY2tncm91bmRDb2xvcj1udWxsfXNldEJvcmRlclN0eWxlKGUpe3RoaXMuYm9yZGVyU3R5bGU9bmV3IEFubm90YXRpb25Cb3JkZXJTdHlsZTtpZihlIGluc3RhbmNlb2YgRGljdClpZihlLmhhcygiQlMiKSl7Y29uc3QgdD1lLmdldCgiQlMiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiVHlwZSIpO2lmKCFlfHxpc05hbWUoZSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX19ZWxzZSBpZihlLmhhcygiQm9yZGVyIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiQm9yZGVyIik7aWYoQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX19ZWxzZSB0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKDApfXNldEFwcGVhcmFuY2UoZSl7dGhpcy5hcHBlYXJhbmNlPW51bGw7Y29uc3QgdD1lLmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgaT10LmdldCgiTiIpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9aTtyZXR1cm59aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9ZS5nZXQoIkFTIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSYmaS5oYXMoYS5uYW1lKSkpcmV0dXJuO2NvbnN0IHI9aS5nZXQoYS5uYW1lKTtyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHRoaXMuYXBwZWFyYW5jZT1yKX1zZXRPcHRpb25hbENvbnRlbnQoZSl7dGhpcy5vYz1udWxsO2NvbnN0IHQ9ZS5nZXQoIk9DIik7dCBpbnN0YW5jZW9mIE5hbWU/d2Fybigic2V0T3B0aW9uYWxDb250ZW50OiBTdXBwb3J0IGZvciAvTmFtZS1lbnRyeSBpcyBub3QgaW1wbGVtZW50ZWQuIik6dCBpbnN0YW5jZW9mIERpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgT2JqZWN0TG9hZGVyKHQsZSx0LnhyZWYpLmxvYWQoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0fSkpfSkpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyLHMpe2NvbnN0e2hhc093bkNhbnZhczpuLGlkOm8scmVjdDpnfT10aGlzLmRhdGE7bGV0IEM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGg9ISEobiYmaSZjKTtpZihoJiYoZ1swXT09PWdbMl18fGdbMV09PT1nWzNdKSl7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMTtyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1pZighQyl7aWYoIWgpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Qz1uZXcgU3RyaW5nU3RyZWFtKCIiKTtDLmRpY3Q9bmV3IERpY3R9Y29uc3QgbD1DLmRpY3QsUT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJDb2xvclNwYWNlIiwiUGF0dGVybiIsIlNoYWRpbmciLCJYT2JqZWN0IiwiRm9udCJdLEMpLEU9bG9va3VwUmVjdChsLmdldEFycmF5KCJCQm94IiksWzAsMCwxLDFdKSx1PWxvb2t1cE1hdHJpeChsLmdldEFycmF5KCJNYXRyaXgiKSxhKSxkPWdldFRyYW5zZm9ybU1hdHJpeChnLEUsdSksZj1uZXcgT3BlcmF0b3JMaXN0O2xldCBwO3RoaXMub2MmJihwPWF3YWl0IGUucGFyc2VNYXJrZWRDb250ZW50UHJvcHModGhpcy5vYyxudWxsKSk7dm9pZCAwIT09cCYmZi5hZGRPcCh2ZSxbIk9DIixwXSk7Zi5hZGRPcChYZSxbbyxnLGQsdSxoXSk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpDLHRhc2s6dCxyZXNvdXJjZXM6USxvcGVyYXRvckxpc3Q6ZixmYWxsYmFja0ZvbnREaWN0OnRoaXMuX2ZhbGxiYWNrRm9udERpY3R9KTtmLmFkZE9wKFplLFtdKTt2b2lkIDAhPT1wJiZmLmFkZE9wKFRlLFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpmLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpofX1hc3luYyBzYXZlKGUsdCxpKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IGE9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxyPVtdLHM9W107bGV0IG49bnVsbDtjb25zdCBvPXtkZXNpcmVkU2l6ZTpNYXRoLkluZmluaXR5LHJlYWR5OiEwLGVucXVldWUoZSx0KXtmb3IoY29uc3QgdCBvZiBlLml0ZW1zKWlmKHZvaWQgMCE9PXQuc3RyKXtufHw9dC50cmFuc2Zvcm0uc2xpY2UoLTIpO3MucHVzaCh0LnN0cik7aWYodC5oYXNFT0wpe3IucHVzaChzLmpvaW4oIiIpLnRyaW1FbmQoKSk7cy5sZW5ndGg9MH19fX07YXdhaXQgZS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnRoaXMuYXBwZWFyYW5jZSx0YXNrOnQscmVzb3VyY2VzOmEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITAsa2VlcFdoaXRlU3BhY2U6ITAsc2luazpvLHZpZXdCb3g6aX0pO3RoaXMucmVzZXQoKTtzLmxlbmd0aCYmci5wdXNoKHMuam9pbigiIikudHJpbUVuZCgpKTtpZihyLmxlbmd0aD4xfHxyWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9bG9va3VwUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCksaT1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChuLHQsaSk7dGhpcy5kYXRhLnRleHRDb250ZW50PXJ9fV90cmFuc2Zvcm1Qb2ludChlLHQsaSl7Y29uc3R7cmVjdDphfT10aGlzLmRhdGE7dHx8PVswLDAsMSwxXTtpfHw9WzEsMCwwLDEsMCwwXTtjb25zdCByPWdldFRyYW5zZm9ybU1hdHJpeChhLHQsaSk7cls0XS09YVswXTtyWzVdLT1hWzFdO2U9VXRpbC5hcHBseVRyYW5zZm9ybShlLHIpO3JldHVybiBVdGlsLmFwcGx5VHJhbnNmb3JtKGUsaSl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7d2FybigiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybiBzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKSk7bGV0IGk9ZTtjb25zdCBhPW5ldyBSZWZTZXQ7ZS5vYmpJZCYmYS5wdXQoZS5vYmpJZCk7Zm9yKDtpLmhhcygiUGFyZW50Iik7KXtpPWkuZ2V0KCJQYXJlbnQiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KXx8aS5vYmpJZCYmYS5oYXMoaS5vYmpJZCkpYnJlYWs7aS5vYmpJZCYmYS5wdXQoaS5vYmpJZCk7aS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fWNsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPUJBO3RoaXMuZGFzaEFycmF5PVszXTt0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9MDt0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPTB9c2V0V2lkdGgoZSx0PVswLDAsMCwwXSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGk9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7aWYoaT4wJiZhPjAmJihlPml8fGU+YSkpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1CQTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9UUE7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPUVBO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT11QTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ZEF9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBpPSEwLGE9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2k9ITE7YnJlYWt9dD4wJiYoYT0hMSl9aWYoMD09PWUubGVuZ3RofHxpJiYhYSl7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgaT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWkgaW5zdGFuY2VvZiBOYW1lP2kubmFtZTpWfWxldCBpPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PVope2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTtpPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWkgaW5zdGFuY2VvZiBSZWY/aS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6aSxmaWxsQ29sb3I6YSxibGVuZE1vZGU6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOm99KXtsZXQgZz1OdW1iZXIuTUFYX1ZBTFVFLGM9TnVtYmVyLk1BWF9WQUxVRSxDPU51bWJlci5NSU5fVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO2NvbnN0IGw9WyJxIl07dCYmbC5wdXNoKHQpO2kmJmwucHVzaChgJHtpWzBdfSAke2lbMV19ICR7aVsyXX0gUkdgKTthJiZsLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IHJnYCk7bGV0IFE9dGhpcy5kYXRhLnF1YWRQb2ludHM7UXx8KFE9RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSkpO2ZvcihsZXQgZT0wLHQ9US5sZW5ndGg7ZTx0O2UrPTgpe2NvbnN0W3QsaSxhLHJdPW8obCxRLnN1YmFycmF5KGUsZSs4KSk7Zz1NYXRoLm1pbihnLHQpO0M9TWF0aC5tYXgoQyxpKTtjPU1hdGgubWluKGMsYSk7aD1NYXRoLm1heChoLHIpfWwucHVzaCgiUSIpO2NvbnN0IEU9bmV3IERpY3QoZSksdT1uZXcgRGljdChlKTt1LnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Y29uc3QgZD1uZXcgU3RyaW5nU3RyZWFtKGwuam9pbigiICIpKTtkLmRpY3Q9dTtFLnNldCgiRm0wIixkKTtjb25zdCBmPW5ldyBEaWN0KGUpO3ImJmYuc2V0KCJCTSIsTmFtZS5nZXQocikpOyJudW1iZXIiPT10eXBlb2YgcyYmZi5zZXQoIkNBIixzKTsibnVtYmVyIj09dHlwZW9mIG4mJmYuc2V0KCJjYSIsbik7Y29uc3QgcD1uZXcgRGljdChlKTtwLnNldCgiR1MwIixmKTtjb25zdCBtPW5ldyBEaWN0KGUpO20uc2V0KCJFeHRHU3RhdGUiLHApO20uc2V0KCJYT2JqZWN0IixFKTtjb25zdCB5PW5ldyBEaWN0KGUpO3kuc2V0KCJSZXNvdXJjZXMiLG0pO2NvbnN0IHc9dGhpcy5kYXRhLnJlY3Q9W2csYyxDLGhdO3kuc2V0KCJCQm94Iix3KTt0aGlzLmFwcGVhcmFuY2U9bmV3IFN0cmluZ1N0cmVhbSgiL0dTMCBncyAvRm0wIERvIik7dGhpcy5hcHBlYXJhbmNlLmRpY3Q9eTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlLGQpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBbm5vdGF0aW9uKGUsdCxpLGEpe2NvbnN0IHI9dC5yZWZ8fD1lLmdldE5ld1RlbXBvcmFyeVJlZigpLHM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPVtdO2xldCBvO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtvPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTthd2FpdCB3cml0ZU9iamVjdChhLHMsbixlKTtpLnB1c2goe3JlZjphLGRhdGE6bi5qb2luKCIiKX0pfWVsc2Ugbz10aGlzLmNyZWF0ZU5ld0RpY3QodCxlLHt9KTtOdW1iZXIuaXNJbnRlZ2VyKHQucGFyZW50VHJlZUlkKSYmby5zZXQoIlN0cnVjdFBhcmVudCIsdC5wYXJlbnRUcmVlSWQpO24ubGVuZ3RoPTA7YXdhaXQgd3JpdGVPYmplY3QocixvLG4sZSk7cmV0dXJue3JlZjpyLGRhdGE6bi5qb2luKCIiKX19c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsaSxhKXtjb25zdCByPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShpLHQsYSkscz10aGlzLmNyZWF0ZU5ld0RpY3QoaSx0LHthcDpyfSksbj1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cyx4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOmEuZXZhbHVhdG9yT3B0aW9uc30pO2kucmVmJiYobi5yZWY9bi5yZWZUb1JlcGxhY2U9aS5yZWYpO3JldHVybiBufX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3IuYW5ub3RhdGlvblR5cGU9WDt2b2lkIDA9PT1yLmZpZWxkTmFtZSYmKHIuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09ci5hY3Rpb25zJiYoci5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksdCxmQSkpO2xldCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7ci5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShzKTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO3IuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2lmKHZvaWQgMD09PXMmJmEueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtyLmZpZWxkVmFsdWU9cz1hLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1zJiZudWxsIT09ci5kZWZhdWx0RmllbGRWYWx1ZSYmKHIuZmllbGRWYWx1ZT1yLmRlZmF1bHRGaWVsZFZhbHVlKTtyLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7ci5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1yLmZpZWxkVmFsdWUmJm51bGwhPT1yLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtyLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBnPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGM9YS5hY3JvRm9ybS5nZXQoIkRSIiksQz10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6ZyxhY3JvRm9ybVJlc291cmNlczpjLGFwcGVhcmFuY2VSZXNvdXJjZXM6QyxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbZyxDLGNdLG1lcmdlU3ViRGljdHM6ITB9KX07ci5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyLmZpZWxkRmxhZ3MpfHxyLmZpZWxkRmxhZ3M8MCkmJihyLmZpZWxkRmxhZ3M9MCk7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhhQSk7ci5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhyQSk7ci5oaWRkZW49dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyx6KXx8dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyxlQSl9X2RlY29kZUZvcm1WYWx1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZT0+InN0cmluZyI9PXR5cGVvZiBlKSkubWFwKChlPT5zdHJpbmdUb1BERlN0cmluZyhlKSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZUEpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gYTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscil7aWYoYSYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscik7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpLHIpO2lmKHRoaXMuYXBwZWFyYW5jZSYmbnVsbD09PXMpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxhLHIpO2NvbnN0IG49bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6bixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IG89ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmaSZjKSxnPVswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dLEM9Z2V0VHJhbnNmb3JtTWF0cml4KHRoaXMuZGF0YS5yZWN0LGcsWzEsMCwwLDEsMCwwXSk7bGV0IGg7dGhpcy5vYyYmKGg9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1oJiZuLmFkZE9wKHZlLFsiT0MiLGhdKTtuLmFkZE9wKFhlLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsQyx0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpLG9dKTtjb25zdCBsPW5ldyBTdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpsLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSk7bi5hZGRPcChaZSxbXSk7dm9pZCAwIT09aCYmbi5hZGRPcChUZSxbXSk7cmV0dXJue29wTGlzdDpuLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpvfX1fZ2V0TUtEaWN0KGUpe2NvbnN0IHQ9bmV3IERpY3QobnVsbCk7ZSYmdC5zZXQoIlIiLGUpO3RoaXMuYm9yZGVyQ29sb3ImJnQuc2V0KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9YXN5bmMgc2F2ZShlLHQsaSl7Y29uc3Qgcj1pPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcz1yPy52YWx1ZSxuPXI/LnJvdGF0aW9uO2lmKHM9PT10aGlzLmRhdGEuZmllbGRWYWx1ZXx8dm9pZCAwPT09cyl7aWYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmdm9pZCAwPT09bilyZXR1cm4gbnVsbDtzfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09biYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShzKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJnMubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZzLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IG89bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtvPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGgsaSk7aWYobnVsbD09PW8pcmV0dXJuIG51bGx9bGV0IGc9ITE7aWYobz8ubmVlZEFwcGVhcmFuY2VzKXtnPSEwO289bnVsbH1jb25zdHt4cmVmOmN9PWUsQz1jLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoQyBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGw9bmV3IERpY3QoYyk7Zm9yKGNvbnN0IGUgb2YgQy5nZXRLZXlzKCkpIkFQIiE9PWUmJmwuc2V0KGUsQy5nZXRSYXcoZSkpO2NvbnN0IFE9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzfSxlbmNvZGVyPWU9PmlzQXNjaWkoZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApO2wuc2V0KCJWIixBcnJheS5pc0FycmF5KHMpP3MubWFwKGVuY29kZXIpOmVuY29kZXIocykpO3RoaXMuYW1lbmRTYXZlZERpY3QoaSxsKTtjb25zdCBFPXRoaXMuX2dldE1LRGljdChuKTtFJiZsLnNldCgiTUsiLEUpO2NvbnN0IHU9W10sZD1be3JlZjp0aGlzLnJlZixkYXRhOiIiLHhmYTpRLG5lZWRBcHBlYXJhbmNlczpnfV07aWYobnVsbCE9PW8pe2NvbnN0IGU9Yy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KGMpO2wuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHI9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGMpLHM9bmV3IFN0cmluZ1N0cmVhbShvKSxuPXMuZGljdD1uZXcgRGljdChjKTtuLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bi5zZXQoIlJlc291cmNlcyIscik7bi5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSk7ZyE9PWEmJm4uc2V0KCJNYXRyaXgiLGcpO2F3YWl0IHdyaXRlT2JqZWN0KGUscyx1LGMpO2QucHVzaCh7cmVmOmUsZGF0YTp1LmpvaW4oIiIpLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pO3UubGVuZ3RoPTB9bC5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLGwsdSxjKTtkWzBdLmRhdGE9dS5qb2luKCIiKTtyZXR1cm4gZH1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmhhc0ZpZWxkRmxhZyhuQSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcyxuO2lmKHIpe3M9ci5mb3JtYXR0ZWRWYWx1ZXx8ci52YWx1ZTtuPXIucm90YXRpb259aWYodm9pZCAwPT09biYmdm9pZCAwPT09cyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgZz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZih2b2lkIDA9PT1zKXtzPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFzKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYH1BcnJheS5pc0FycmF5KHMpJiYxPT09cy5sZW5ndGgmJihzPXNbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIHMsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7cz1zLnRyaW0oKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoKHtleHBvcnRWYWx1ZTplfSk9PnM9PT1lKSk7cz1lPy5kaXNwbGF5VmFsdWV8fHN9aWYoIiI9PT1zKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYDt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTtsZXQgYyxDPS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe2M9cy5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUubm9ybWFsaXplKCJORkMiKSkpO0M9Yy5sZW5ndGh9ZWxzZSBjPVtzLnJlcGxhY2UoL1xyXG4/fFxuLywiIikubm9ybWFsaXplKCJORkMiKV07bGV0IGw9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sUT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbUSxsXT1bbCxRXSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IEUsdSxkLGY9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCBwPVtdO2xldCBtPSExO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9Zi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKG09ITApO3AucHVzaCh0LmpvaW4oIiIpKX1pZihtJiZpJmgpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYobSYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGk9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLGE9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsaSkscj1hLmNyZWF0ZUZvbnRSZXNvdXJjZXMoYy5qb2luKCIiKSksbj1yLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpZS5zZXQodCxuLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixuKTtjb25zdCBvPWEuZm9udE5hbWUubmFtZTtmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6byxmb250U2l6ZTowfSxyKTtmb3IobGV0IGU9MCx0PXAubGVuZ3RoO2U8dDtlKyspcFtlXT1zdHJpbmdUb1VURjE2U3RyaW5nKGNbZV0pO2NvbnN0IGc9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPW87W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLFEtNCxzLGYsQyk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1nfWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fHdhcm4oIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLFEtNCxzLGYsQyl9bGV0IHk9Zi5kZXNjZW50O3k9aXNOYU4oeSk/bypkOk1hdGgubWF4KG8qZCxNYXRoLmFicyh5KSp1KTtjb25zdCB3PU1hdGgubWluKE1hdGguZmxvb3IoKGwtdSkvMiksMSksYj10aGlzLmRhdGEudGV4dEFsaWdubWVudDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXJldHVybiB0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKEUscCxmLHUsUSxsLGIsMix3LHksZCxhKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoRSxmLHBbMF0sdSxRLGwsMix3LHksZCxhKTtjb25zdCBEPXcreTtpZigwPT09Ynx8Yj4yKXJldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyhEKX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHBbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dChwWzBdLGYsdSxRLGIse3NoaWZ0OjB9LDIsRCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxpLGEpe2NvbnN0IHI9bmV3IE9wZXJhdG9yTGlzdCxzPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTpuLGZvbnRTaXplOm99PWk7YXdhaXQgZS5oYW5kbGVTZXRGb250KGEsW24mJk5hbWUuZ2V0KG4pLG9dLG51bGwscix0LHMsbnVsbCk7cmV0dXJuIHMuZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIHQuY2hhcnNUb0dseXBocyhlKS5yZWR1Y2UoKChlLHQpPT5lK3Qud2lkdGgpLDApLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxpLGEscil7bGV0e2ZvbnRTaXplOm59PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsbz0obnx8MTIpKnMsZz1NYXRoLnJvdW5kKGUvbyk7aWYoIW4pe2NvbnN0IHJvdW5kV2l0aFR3b0RpZ2l0cz1lPT5NYXRoLmZsb29yKDEwMCplKS8xMDA7aWYoLTE9PT1yKXtjb25zdCByPXRoaXMuX2dldFRleHRXaWR0aChpLGEpO249cm91bmRXaXRoVHdvRGlnaXRzKE1hdGgubWluKGUvcyxyPnQ/dC9yOjEvMCkpO2c9MX1lbHNle2NvbnN0IGM9aS5zcGxpdCgvXHJcbj98XG4vKSxDPVtdO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9YS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksaT1hLmNoYXJzVG9HbHlwaHModCkscj1hLmdldENoYXJQb3NpdGlvbnModCk7Qy5wdXNoKHtsaW5lOnQsZ2x5cGhzOmkscG9zaXRpb25zOnJ9KX1jb25zdCBpc1Rvb0JpZz1pPT57bGV0IHI9MDtmb3IoY29uc3QgcyBvZiBDKXtyKz10aGlzLl9zcGxpdExpbmUobnVsbCxhLGksdCxzKS5sZW5ndGgqaTtpZihyPmUpcmV0dXJuITB9cmV0dXJuITF9O2c9TWF0aC5tYXgoZyxyKTtmb3IoOzspe289ZS9nO249cm91bmRXaXRoVHdvRGlnaXRzKG8vcyk7aWYoIWlzVG9vQmlnKG4pKWJyZWFrO2crK319Y29uc3R7Zm9udE5hbWU6Yyxmb250Q29sb3I6Q309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSh7Zm9udFNpemU6ZSxmb250TmFtZTp0LGZvbnRDb2xvcjppfSl7cmV0dXJuYC8ke2VzY2FwZVBERk5hbWUodCl9ICR7ZX0gVGYgJHtnZXRQZGZDb2xvcihpLCEwKX1gfSh7Zm9udFNpemU6bixmb250TmFtZTpjLGZvbnRDb2xvcjpDfSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLG4sZS9nXX1fcmVuZGVyVGV4dChlLHQsaSxhLHIscyxuLG8pe2xldCBnO2lmKDE9PT1yKXtnPShhLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmkpLzJ9ZWxzZSBpZigyPT09cil7Zz1hLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmktbn1lbHNlIGc9bjtjb25zdCBjPW51bWJlclRvU3RyaW5nKGctcy5zaGlmdCk7cy5zaGlmdD1nO3JldHVybmAke2N9ICR7bz1udW1iZXJUb1N0cmluZyhvKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmksYWNyb0Zvcm1SZXNvdXJjZXM6YX09dGhpcy5fZmllbGRSZXNvdXJjZXMscj10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighcilyZXR1cm4gdHx8RGljdC5lbXB0eTtmb3IoY29uc3QgZSBvZlt0LGldKWlmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKHIpKXJldHVybiBlfWlmKGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWEuZ2V0KCJGb250Iik7aWYoaSBpbnN0YW5jZW9mIERpY3QmJmkuaGFzKHIpKXtjb25zdCBhPW5ldyBEaWN0KGUpO2Euc2V0KHIsaS5nZXRSYXcocikpO2NvbnN0IHM9bmV3IERpY3QoZSk7cy5zZXQoIkZvbnQiLGEpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltzLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fERpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiUE1EIikpe3RoaXMuZmxhZ3N8PXo7dGhpcy5kYXRhLmhpZGRlbj0hMDt3YXJuKCJCYXJjb2RlcyBhcmUgbm90IHN1cHBvcnRlZCIpfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwOyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MHx8aT4yKSYmKGk9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9aTtsZXQgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApJiYoYT0wKTt0aGlzLmRhdGEubWF4TGVuPWE7dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhzQSk7dGhpcy5kYXRhLmNvbWI9dGhpcy5oYXNGaWVsZEZsYWcobEEpJiYhdGhpcy5oYXNGaWVsZEZsYWcoc0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcobkEpJiYhdGhpcy5oYXNGaWVsZEZsYWcoY0EpJiYwIT09dGhpcy5kYXRhLm1heExlbjt0aGlzLmRhdGEuZG9Ob3RTY3JvbGw9dGhpcy5oYXNGaWVsZEZsYWcoaEEpfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzfV9nZXRDb21iQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLEMpe2NvbnN0IGg9ci90aGlzLmRhdGEubWF4TGVuLGw9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoQyksUT1bXSxFPXQuZ2V0Q2hhclBvc2l0aW9ucyhpKTtmb3IoY29uc3RbZSx0XW9mIEUpUS5wdXNoKGAoJHtlc2NhcGVTdHJpbmcoaS5zdWJzdHJpbmcoZSx0KSl9KSBUamApO2NvbnN0IHU9US5qb2luKGAgJHtudW1iZXJUb1N0cmluZyhoKX0gMCBUZCBgKTtyZXR1cm5gL1R4IEJNQyBxICR7bH1CVCBgK2UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcobil9ICR7bnVtYmVyVG9TdHJpbmcobytnKX0gVG0gJHt1fSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGksYSxyLHMsbixvLGcsYyxDLGgpe2NvbnN0IGw9W10sUT1yLTIqbyxFPXtzaGlmdDowfTtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKyspe2NvbnN0IHM9dFtlXSxoPXRoaXMuX3NwbGl0TGluZShzLGksYSxRKTtmb3IobGV0IHQ9MCxzPWgubGVuZ3RoO3Q8czt0Kyspe2NvbnN0IHM9aFt0XSxRPTA9PT1lJiYwPT09dD8tZy0oQy1jKTotQztsLnB1c2godGhpcy5fcmVuZGVyVGV4dChzLGksYSxyLG4sRSxvLFEpKX19Y29uc3QgdT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhoKSxkPWwuam9pbigiXG4iKTtyZXR1cm5gL1R4IEJNQyBxICR7dX1CVCBgK2UrYCAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhzKX0gVG0gJHtkfSBFVCBRIEVNQ2B9X3NwbGl0TGluZShlLHQsaSxhLHI9e30pe2U9ci5saW5lfHxlO2NvbnN0IHM9ci5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihzLmxlbmd0aDw9MSlyZXR1cm5bZV07Y29uc3Qgbj1yLnBvc2l0aW9uc3x8dC5nZXRDaGFyUG9zaXRpb25zKGUpLG89aS8xZTMsZz1bXTtsZXQgYz0tMSxDPS0xLGg9LTEsbD0wLFE9MDtmb3IobGV0IHQ9MCxpPXMubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0W2kscl09blt0XSxFPXNbdF0sdT1FLndpZHRoKm87aWYoIiAiPT09RS51bmljb2RlKWlmKFErdT5hKXtnLnB1c2goZS5zdWJzdHJpbmcobCxpKSk7bD1pO1E9dTtjPS0xO2g9LTF9ZWxzZXtRKz11O2M9aTtDPXI7aD10fWVsc2UgaWYoUSt1PmEpaWYoLTEhPT1jKXtnLnB1c2goZS5zdWJzdHJpbmcobCxDKSk7bD1DO3Q9aCsxO2M9LTE7UT0wfWVsc2V7Zy5wdXNoKGUuc3Vic3RyaW5nKGwsaSkpO2w9aTtRPXV9ZWxzZSBRKz11fWw8ZS5sZW5ndGgmJmcucHVzaChlLnN1YnN0cmluZyhsLGUubGVuZ3RoKSk7cmV0dXJuIGd9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuaGFzRmllbGRGbGFnKG5BKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhnQSk7dGhpcy5kYXRhLnJhZGlvQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKG9BKSYmIXRoaXMuaGFzRmllbGRGbGFnKGdBKTt0aGlzLmRhdGEucHVzaEJ1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSk7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9ITE7aWYodGhpcy5kYXRhLmNoZWNrQm94KXRoaXMuX3Byb2Nlc3NDaGVja0JveChlKTtlbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil0aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk7ZWxzZSBpZih0aGlzLmRhdGEucHVzaEJ1dHRvbil7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2Ugd2FybigiSW52YWxpZCBmaWVsZCBmbGFncyBmb3IgYnV0dG9uIHdpZGdldCBhbm5vdGF0aW9uIil9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIscyl7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSwhMSxzKTtsZXQgbj1udWxsLG89bnVsbDtpZihzKXtjb25zdCBlPXMuZ2V0KHRoaXMuZGF0YS5pZCk7bj1lP2UudmFsdWU6bnVsbDtvPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1uJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyLHMpO251bGw9PW4mJihuPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3QgZz1uP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKGcpe2NvbnN0IG49dGhpcy5hcHBlYXJhbmNlLGM9bG9va3VwTWF0cml4KGcuZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7byYmZy5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHMpKTt0aGlzLmFwcGVhcmFuY2U9Zztjb25zdCBDPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyLHMpO3RoaXMuYXBwZWFyYW5jZT1uO2cuZGljdC5zZXQoIk1hdHJpeCIsYyk7cmV0dXJuIEN9cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsaSl7cmV0dXJuIHRoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LGkpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LGkpOm51bGx9YXN5bmMgX3NhdmVDaGVja2JveChlLHQsaSl7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldCh0aGlzLmRhdGEuaWQpO2xldCByPWE/LnJvdGF0aW9uLHM9YT8udmFsdWU7aWYodm9pZCAwPT09cil7aWYodm9pZCAwPT09cylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PXMpcmV0dXJuIG51bGx9Y29uc3Qgbj1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7dm9pZCAwPT09ciYmKHI9dGhpcy5yb3RhdGlvbik7dm9pZCAwPT09cyYmKHM9dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpO2NvbnN0IG89e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sZz1OYW1lLmdldChzP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiT2ZmIik7bi5zZXQoIlYiLGcpO24uc2V0KCJBUyIsZyk7bi5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2NvbnN0IGM9dGhpcy5fZ2V0TUtEaWN0KHIpO2MmJm4uc2V0KCJNSyIsYyk7Y29uc3QgQz1bXTthd2FpdCB3cml0ZU9iamVjdCh0aGlzLnJlZixuLEMsZS54cmVmKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOkMuam9pbigiIikseGZhOm99XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpKXtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBhPWkuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHI9YT8ucm90YXRpb24scz1hPy52YWx1ZTtpZih2b2lkIDA9PT1yKXtpZih2b2lkIDA9PT1zKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09cylyZXR1cm4gbnVsbH1jb25zdCBuPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1zJiYocz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09ciYmKHI9dGhpcy5yb3RhdGlvbik7Y29uc3Qgbz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOnM/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxnPU5hbWUuZ2V0KHM/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKSxjPVtdO2xldCBDPW51bGw7aWYocylpZih0aGlzLnBhcmVudCBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO3Quc2V0KCJWIixnKTthd2FpdCB3cml0ZU9iamVjdCh0aGlzLnBhcmVudCx0LGMsZS54cmVmKTtDPWMuam9pbigiIik7Yy5sZW5ndGg9MH1lbHNlIHRoaXMucGFyZW50IGluc3RhbmNlb2YgRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIixnKTtuLnNldCgiQVMiLGcpO24uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtjb25zdCBoPXRoaXMuX2dldE1LRGljdChyKTtoJiZuLnNldCgiTUsiLGgpO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG4sYyxlLnhyZWYpO2NvbnN0IGw9W3tyZWY6dGhpcy5yZWYsZGF0YTpjLmpvaW4oIiIpLHhmYTpvfV07QyYmbC5wdXNoKHtyZWY6dGhpcy5wYXJlbnQsZGF0YTpDLHhmYTpudWxsfSk7cmV0dXJuIGx9X2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLHQpe2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPVswLDAsaSxhXSxzPS44Kk1hdGgubWluKGksYSk7bGV0IG4sbztpZigiY2hlY2siPT09dCl7bj17d2lkdGg6Ljc1NSpzLGhlaWdodDouNzA1KnN9O289IjMifWVsc2UgaWYoImRpc2MiPT09dCl7bj17d2lkdGg6Ljc5MSpzLGhlaWdodDouNzA1KnN9O289ImwifWVsc2UgdW5yZWFjaGFibGUoYF9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UgLSB1bnN1cHBvcnRlZCB0eXBlOiAke3R9YCk7Y29uc3QgZz1gcSBCVCAvUGRmSnNaYURiICR7c30gVGYgMCBnICR7bnVtYmVyVG9TdHJpbmcoKGktbi53aWR0aCkvMil9ICR7bnVtYmVyVG9TdHJpbmcoKGEtbi5oZWlnaHQpLzIpfSBUZCAoJHtvfSkgVGogRVQgUWAsYz1uZXcgRGljdChlLnhyZWYpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7Yy5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2NvbnN0IEM9bmV3IERpY3QoZS54cmVmKSxoPW5ldyBEaWN0KGUueHJlZik7aC5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtDLnNldCgiRm9udCIsaCk7Yy5zZXQoIlJlc291cmNlcyIsQyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKGcpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2UuZGljdD1jO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgaT10LmdldCgiTiIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIGEmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1hKTtjb25zdCByPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixzPWkuZ2V0S2V5cygpO2lmKDA9PT1zLmxlbmd0aClzLnB1c2goIk9mZiIscik7ZWxzZSBpZigxPT09cy5sZW5ndGgpIk9mZiI9PT1zWzBdP3MucHVzaChyKTpzLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYocy5pbmNsdWRlcyhyKSl7cy5sZW5ndGg9MDtzLnB1c2goIk9mZiIscil9ZWxzZXtjb25zdCBlPXMuZmluZCgoZT0+Ik9mZiIhPT1lKSk7cy5sZW5ndGg9MDtzLnB1c2goIk9mZiIsZSl9cy5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPXNbMV07Y29uc3Qgbj1pLmdldCh0aGlzLmRhdGEuZXhwb3J0VmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9biBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bjpudWxsO2NvbnN0IG89aS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IGk9dC5nZXQoIlYiKTtpIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShpKSl9Y29uc3QgaT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWkuZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGEuZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKTticmVha31jb25zdCByPWEuZ2V0KHRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9yOm51bGw7Y29uc3Qgcz1hLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3M6bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiZGlzYyIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NQdXNoQnV0dG9uKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO2lmKHQuaGFzKCJBIil8fHQuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hdC5oYXMoIkEiKSYmIXQuaGFzKCJBQSIpO0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6dCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6aS5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmkuYXR0YWNobWVudHN9KX1lbHNlIHdhcm4oIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXQoIkJhc2VGb250IixOYW1lLmdldCgiWmFwZkRpbmdiYXRzIikpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIlphcGZEaW5nYmF0c0VuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5pbmRpY2VzPXQuZ2V0QXJyYXkoIkkiKTt0aGlzLmhhc0luZGljZXM9QXJyYXkuaXNBcnJheSh0aGlzLmluZGljZXMpJiZ0aGlzLmluZGljZXMubGVuZ3RoPjA7dGhpcy5kYXRhLm9wdGlvbnM9W107Y29uc3QgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9aS5mZXRjaElmUmVmKGFbZV0pLHI9QXJyYXkuaXNBcnJheSh0KTt0aGlzLmRhdGEub3B0aW9uc1tlXT17ZXhwb3J0VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHI/aS5mZXRjaElmUmVmKHRbMF0pOnQpLGRpc3BsYXlWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFsxXSk6dCl9fWlmKHRoaXMuaGFzSW5kaWNlcyl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9W107Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg7Zm9yKGNvbnN0IHQgb2YgdGhpcy5pbmRpY2VzKU51bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJnQ8ZSYmdGhpcy5kYXRhLmZpZWxkVmFsdWUucHVzaCh0aGlzLmRhdGEub3B0aW9uc1t0XS5leHBvcnRWYWx1ZSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU9W3RoaXMuZGF0YS5maWVsZFZhbHVlXTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPVtdKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhDQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpO2xldCByLG47Y29uc3Qgbz1hPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cj1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXImJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cj9yPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgQz10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPEM7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgbD1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvQztsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxsKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LGwsLTEpfWNvbnN0IHU9RSpzLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxDKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LGwsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9UjtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1OO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Vzt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksWikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtldmFsdWF0b3JPcHRpb25zOnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1HO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsaSkucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLHQsaSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWF8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS50cmltRW5kKCkpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4Oml9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LGkpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCByPWUuZGljdC5nZXQoIkNBIikscz1uZXcgRmFrZVVuaWNvZGVGb250KGksInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9cy5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxyKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnIsZm9udFNpemU6cyxyZWN0Om4scm90YXRpb246byx1c2VyOmcsdmFsdWU6Y309ZSxDPW5ldyBEaWN0KHQpO0Muc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Qy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGcmVlVGV4dCIpKTtDLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtDLnNldCgiUmVjdCIsbik7Y29uc3QgaD1gL0hlbHYgJHtzfSBUZiAke2dldFBkZkNvbG9yKHIsITApfWA7Qy5zZXQoIkRBIixoKTtDLnNldCgiQ29udGVudHMiLGlzQXNjaWkoYyk/YzpzdHJpbmdUb1VURjE2U3RyaW5nKGMsITApKTtDLnNldCgiRiIsNCk7Qy5zZXQoIkJvcmRlciIsWzAsMCwwXSk7Qy5zZXQoIlJvdGF0ZSIsbyk7ZyYmQy5zZXQoIlQiLGlzQXNjaWkoZyk/ZzpzdHJpbmdUb1VURjE2U3RyaW5nKGcsITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO0Muc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBDfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpDLHZhbHVlOmh9PWUsbD1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1sLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxsKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7QyUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49cypnLEc9MSpnLHg9Tip3Lmxlbmd0aDt4PnkmJihSPXkveCk7Y29uc3QgVT1nKk1hdGgubWluKGssUik7bGV0IE0sTCxIO3N3aXRjaChDKXtjYXNlIDA6SD1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07TT1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTtNPVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTtNPVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO009Wy1jWzNdLGNbMl0tR119Y29uc3QgSj1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFUpfSBUZmBdO0oucHVzaChgJHtNLmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCBZPW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0oucHVzaChgMCAtJHtZfSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUoucHVzaCgiRVQiLCJRIik7Y29uc3Qgdj1KLmpvaW4oIlxuIiksVD1uZXcgRGljdCh0KTtULnNldCgiRm9ybVR5cGUiLDEpO1Quc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtULnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7VC5zZXQoIkJCb3giLGMpO1Quc2V0KCJSZXNvdXJjZXMiLGwpO1Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgSz1uZXcgU3RyaW5nU3RyZWFtKHYpO0suZGljdD1UO3JldHVybiBLfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9eDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxDPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLEMpfHwodGhpcy5yZWN0YW5nbGU9Qyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0tZyx0WzJdK2csdFs3XS1nLHRbM10rZ119fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1VO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2l9ICR7YX0gJHtyfSAke259IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1NO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscz1yP2dldFBkZkNvbG9yQXJyYXkocik6bnVsbCxuPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsQz0oci1pKS8yKm8saD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytDfSAke259ICR7cn0gJHtjK2h9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtaH0gJHtnK0N9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctQ30gJHthfSAke2l9ICR7Yy1ofSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2h9ICR7Zy1DfSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1IO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShhKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MipzLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKXtvWzBdPU1hdGgubWluKG9bMF0scltlXS1uKTtvWzFdPU1hdGgubWluKG9bMV0scltlKzFdLW4pO29bMl09TWF0aC5tYXgob1syXSxyW2VdK24pO29bM109TWF0aC5tYXgob1szXSxyW2UrMV0rbil9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3N9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUx9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXF9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Tzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgYT10LmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShhKSl7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKXtpZighQXJyYXkuaXNBcnJheShhW2VdKSljb250aW51ZTtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoYVtlXS5sZW5ndGgpO3RoaXMuZGF0YS5pbmtMaXN0cy5wdXNoKHQpO2ZvcihsZXQgcj0wLHM9YVtlXS5sZW5ndGg7cjxzO3IrPTIpe2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbZV1bcl0pLG49aS5mZXRjaElmUmVmKGFbZV1bcisxXSk7aWYoIm51bWJlciI9PXR5cGVvZiBzJiYibnVtYmVyIj09dHlwZW9mIG4pe3Rbcl09czt0W3IrMV09bn19fWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKnIsbj1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS5pbmtMaXN0cylmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKXtuWzBdPU1hdGgubWluKG5bMF0sZVt0XS1zKTtuWzFdPU1hdGgubWluKG5bMV0sZVt0KzFdLXMpO25bMl09TWF0aC5tYXgoblsyXSxlW3RdK3MpO25bM109TWF0aC5tYXgoblszXSxlW3QrMV0rcyl9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbil8fCh0aGlzLnJlY3RhbmdsZT1uKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3J9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSs9MillLnB1c2goYCR7dFtpXX0gJHt0W2krMV19ICR7MD09PWk/Im0iOiJsIn1gKTtlLnB1c2goIlMiKX1yZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnIsb3BhY2l0eTpzLHBhdGhzOm4sb3V0bGluZXM6byxyZWN0Omcscm90YXRpb246Yyx0aGlja25lc3M6Q309ZSxoPW5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJJbmsiKSk7aC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLGcpO2guc2V0KCJJbmtMaXN0IixvPy5wb2ludHN8fG4ubWFwKChlPT5lLnBvaW50cykpKTtoLnNldCgiRiIsNCk7aC5zZXQoIlJvdGF0ZSIsYyk7byYmaC5zZXQoIklUIixOYW1lLmdldCgiSW5rSGlnaGxpZ2h0IikpO2NvbnN0IGw9bmV3IERpY3QodCk7aC5zZXQoIkJTIixsKTtsLnNldCgiVyIsQyk7aC5zZXQoIkMiLEFycmF5LmZyb20ociwoZT0+ZS8yNTUpKSk7aC5zZXQoIkNBIixzKTtjb25zdCBRPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsUSk7aT9RLnNldCgiTiIsaSk6US5zZXQoIk4iLGEpO3JldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtpZihlLm91dGxpbmVzKXJldHVybiB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpO2NvbnN0e2NvbG9yOmEscmVjdDpyLHBhdGhzOnMsdGhpY2tuZXNzOm4sb3BhY2l0eTpvfT1lLGc9W2Ake259IHcgMSBKIDEgamAsYCR7Z2V0UGRmQ29sb3IoYSwhMSl9YF07MSE9PW8mJmcucHVzaCgiL1IwIGdzIik7Y29uc3QgYz1bXTtmb3IoY29uc3R7YmV6aWVyOmV9b2Ygcyl7Yy5sZW5ndGg9MDtjLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtpZigyPT09ZS5sZW5ndGgpYy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbMF0pfSAke251bWJlclRvU3RyaW5nKGVbMV0pfSBsIFNgKTtlbHNle2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTYpe2NvbnN0IGk9ZS5zbGljZSh0LHQrNikubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIik7Yy5wdXNoKGAke2l9IGNgKX1jLnB1c2goIlMiKX1nLnB1c2goYy5qb2luKCJcbiIpKX1jb25zdCBDPWcuam9pbigiXG4iKSxoPW5ldyBEaWN0KHQpO2guc2V0KCJGb3JtVHlwZSIsMSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtoLnNldCgiQkJveCIscik7aC5zZXQoIkxlbmd0aCIsQy5sZW5ndGgpO2lmKDEhPT1vKXtjb25zdCBlPW5ldyBEaWN0KHQpLGk9bmV3IERpY3QodCksYT1uZXcgRGljdCh0KTthLnNldCgiQ0EiLG8pO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpO2kuc2V0KCJSMCIsYSk7ZS5zZXQoIkV4dEdTdGF0ZSIsaSk7aC5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgbD1uZXcgU3RyaW5nU3RyZWFtKEMpO2wuZGljdD1oO3JldHVybiBsfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxpKXtjb25zdHtjb2xvcjphLHJlY3Q6cixvdXRsaW5lczp7b3V0bGluZTpzfSxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl07by5wdXNoKGAke251bWJlclRvU3RyaW5nKHNbNF0pfSAke251bWJlclRvU3RyaW5nKHNbNV0pfSBtYCk7Zm9yKGxldCBlPTYsdD1zLmxlbmd0aDtlPHQ7ZSs9NilpZihpc05hTihzW2VdKXx8bnVsbD09PXNbZV0pby5wdXNoKGAke251bWJlclRvU3RyaW5nKHNbZSs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1tlKzVdKX0gbGApO2Vsc2V7Y29uc3QgdD1zLnNsaWNlKGUsZSs2KS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtvLnB1c2goYCR7dH0gY2ApfW8ucHVzaCgiaCBmIik7Y29uc3QgZz1vLmpvaW4oIlxuIiksYz1uZXcgRGljdCh0KTtjLnNldCgiRm9ybVR5cGUiLDEpO2Muc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Yy5zZXQoIkJCb3giLHIpO2Muc2V0KCJMZW5ndGgiLGcubGVuZ3RoKTtjb25zdCBDPW5ldyBEaWN0KHQpLGg9bmV3IERpY3QodCk7Qy5zZXQoIkV4dEdTdGF0ZSIsaCk7Yy5zZXQoIlJlc291cmNlcyIsQyk7Y29uc3QgbD1uZXcgRGljdCh0KTtoLnNldCgiUjAiLGwpO2wuc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtsLnNldCgiY2EiLG4pO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IFE9bmV3IFN0cmluZ1N0cmVhbShnKTtRLmRpY3Q9YztyZXR1cm4gUX19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9SjtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLG9wYWNpdHk6cyxyZWN0Om4scm90YXRpb246byx1c2VyOmcscXVhZFBvaW50czpjfT1lLEM9bmV3IERpY3QodCk7Qy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtDLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkhpZ2hsaWdodCIpKTtDLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtDLnNldCgiUmVjdCIsbik7Qy5zZXQoIkYiLDQpO0Muc2V0KCJCb3JkZXIiLFswLDAsMF0pO0Muc2V0KCJSb3RhdGUiLG8pO0Muc2V0KCJRdWFkUG9pbnRzIixjKTtDLnNldCgiQyIsQXJyYXkuZnJvbShyLChlPT5lLzI1NSkpKTtDLnNldCgiQ0EiLHMpO2cmJkMuc2V0KCJUIixpc0FzY2lpKGcpP2c6c3RyaW5nVG9VVEYxNlN0cmluZyhnLCEwKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtDLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixpfHxhKX1yZXR1cm4gQ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnIsb3V0bGluZXM6cyxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl0sZz1bXTtmb3IoY29uc3QgZSBvZiBzKXtnLmxlbmd0aD0wO2cucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTIpZy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtnLnB1c2goImgiKTtvLnB1c2goZy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksQz1uZXcgRGljdCh0KTtDLnNldCgiRm9ybVR5cGUiLDEpO0Muc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Qy5zZXQoIkJCb3giLHIpO0Muc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLGw9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsbCk7Qy5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgUT1uZXcgRGljdCh0KTtsLnNldCgiUjAiLFEpO1Euc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtRLnNldCgiY2EiLG4pO1Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IEU9bmV3IFN0cmluZ1N0cmVhbShjKTtFLmRpY3Q9QztyZXR1cm4gRX19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFsxXS10WzVdKS82O2xldCBhPWkscj10WzRdO2NvbnN0IHM9dFs1XSxuPXRbNl07ZS5wdXNoKGAke3J9ICR7cythfSBtYCk7ZG97cis9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7cn0gJHtzK2F9IGxgKX13aGlsZShyPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1LO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITF9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PjI1NSE9KDI1NSZlKSk7aWYoZyl7cy5maWxsU3R5bGU9IndoaXRlIjtzLmZpbGxSZWN0KDAsMCxpLGEpO3MuZHJhd0ltYWdlKGUsMCwwKX1jb25zdCBjPXIuY29udmVydFRvQmxvYih7dHlwZToiaW1hZ2UvanBlZyIscXVhbGl0eToxfSkudGhlbigoZT0+ZS5hcnJheUJ1ZmZlcigpKSksQz1OYW1lLmdldCgiWE9iamVjdCIpLGg9TmFtZS5nZXQoIkltYWdlIiksbD1uZXcgRGljdCh0KTtsLnNldCgiVHlwZSIsQyk7bC5zZXQoIlN1YnR5cGUiLGgpO2wuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtsLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZVJHQiIpKTtsLnNldCgiRmlsdGVyIixOYW1lLmdldCgiRENURGVjb2RlIikpO2wuc2V0KCJCQm94IixbMCwwLGksYV0pO2wuc2V0KCJXaWR0aCIsaSk7bC5zZXQoIkhlaWdodCIsYSk7bGV0IFE9bnVsbDtpZihnKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG8ubGVuZ3RoKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IHQ9MCxpPW8ubGVuZ3RoO3Q8aTt0KyspZVt0XT1vW3RdPj4+MjQ7ZWxzZSBmb3IobGV0IHQ9MCxpPW8ubGVuZ3RoO3Q8aTt0KyspZVt0XT0yNTUmb1t0XTtjb25zdCByPW5ldyBEaWN0KHQpO3Iuc2V0KCJUeXBlIixDKTtyLnNldCgiU3VidHlwZSIsaCk7ci5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Iuc2V0KCJDb2xvclNwYWNlIixOYW1lLmdldCgiRGV2aWNlR3JheSIpKTtyLnNldCgiV2lkdGgiLGkpO3Iuc2V0KCJIZWlnaHQiLGEpO1E9bmV3IFN0cmVhbShlLDAsMCxyKX1yZXR1cm57aW1hZ2VTdHJlYW06bmV3IFN0cmVhbShhd2FpdCBjLDAsMCxsKSxzbWFza1N0cmVhbTpRLHdpZHRoOmksaGVpZ2h0OmF9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7cmVjdDpyLHJvdGF0aW9uOnMsdXNlcjpufT1lLG89bmV3IERpY3QodCk7by5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlN0YW1wIikpO28uc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO28uc2V0KCJSZWN0IixyKTtvLnNldCgiRiIsNCk7by5zZXQoIkJvcmRlciIsWzAsMCwwXSk7by5zZXQoIlJvdGF0ZSIscyk7biYmby5zZXQoIlQiLGlzQXNjaWkobik/bjpzdHJpbmdUb1VURjE2U3RyaW5nKG4sITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO28uc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBvfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtyb3RhdGlvbjphfT1lLHtpbWFnZVJlZjpyLHdpZHRoOnMsaGVpZ2h0Om59PWkuaW1hZ2Usbz1uZXcgRGljdCh0KSxnPW5ldyBEaWN0KHQpO28uc2V0KCJYT2JqZWN0IixnKTtnLnNldCgiSW0wIixyKTtjb25zdCBjPWBxICR7c30gMCAwICR7bn0gMCAwIGNtIC9JbTAgRG8gUWAsQz1uZXcgRGljdCh0KTtDLnNldCgiRm9ybVR5cGUiLDEpO0Muc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Qy5zZXQoIkJCb3giLFswLDAscyxuXSk7Qy5zZXQoIlJlc291cmNlcyIsbyk7aWYoYSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChhLHMsbik7Qy5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgaD1uZXcgU3RyaW5nU3RyZWFtKGMpO2guZGljdD1DO3JldHVybiBofX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWUsYT1uZXcgRmlsZVNwZWModC5nZXQoIkZTIiksaSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPWo7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZT1hLnNlcmlhbGl6YWJsZTtjb25zdCByPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9ciBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcoci5uYW1lKToiUHVzaFBpbiI7Y29uc3Qgcz10LmdldCgiY2EiKTt0aGlzLmRhdGEuZmlsbEFscGhhPSJudW1iZXIiPT10eXBlb2YgcyYmcz49MCYmczw9MT9zOm51bGx9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjVD1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3QgdD1lLmRpY3QsaT10LmdldCgiVyIpO2xldCBhPXQuZ2V0KCJJbmRleCIpO2F8fChhPVswLHQuZ2V0KCJTaXplIildKTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczphLGJ5dGVXaWR0aHM6aSxlbnRyeU51bTowLHN0cmVhbVBvczplLnBvc319dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFtpLGEscl09dC5ieXRlV2lkdGhzLHM9dC5lbnRyeVJhbmdlcztmb3IoO3MubGVuZ3RoPjA7KXtjb25zdFtuLG9dPXM7aWYoIU51bWJlci5pc0ludGVnZXIobil8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtufSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpfHwhTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtufSwgJHtvfWApO2ZvcihsZXQgcz10LmVudHJ5TnVtO3M8bzsrK3Mpe3QuZW50cnlOdW09czt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGc9MCxjPTA7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PWkmJihvPTEpO2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7Zz1nPDw4fHR9Zm9yKGxldCB0PTA7dDxyOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7Yz1jPDw4fHR9Y29uc3QgQz17fTtDLm9mZnNldD1nO0MuZ2VuPWM7c3dpdGNoKG8pe2Nhc2UgMDpDLmZyZWU9ITA7YnJlYWs7Y2FzZSAxOkMudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIGVudHJ5IHR5cGU6ICR7b31gKX10aGlzLmVudHJpZXNbbitzXXx8KHRoaXMuZW50cmllc1tuK3NdPUMpfXQuZW50cnlOdW09MDt0LnN0cmVhbVBvcz1lLnBvcztzLnNwbGljZSgwLDIpfX1pbmRleE9iamVjdHMoKXtmdW5jdGlvbiByZWFkVG9rZW4oZSx0KXtsZXQgaT0iIixhPWVbdF07Zm9yKDsxMCE9PWEmJjEzIT09YSYmNjAhPT1hJiYhKCsrdD49ZS5sZW5ndGgpOyl7aSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWVbdF19cmV0dXJuIGl9ZnVuY3Rpb24gc2tpcFVudGlsKGUsdCxpKXtjb25zdCBhPWkubGVuZ3RoLHI9ZS5sZW5ndGg7bGV0IHM9MDtmb3IoO3Q8cjspe2xldCByPTA7Zm9yKDtyPGEmJmVbdCtyXT09PWlbcl07KSsrcjtpZihyPj1hKWJyZWFrO3QrKztzKyt9cmV0dXJuIHN9Y29uc3QgZT0vXGIoZW5kb2JqfFxkK1xzK1xkK1xzK29ianx4cmVmfHRyYWlsZXJccyo8PClcYi9nLHQ9L1xiKHN0YXJ0eHJlZnxcZCtccytcZCtccytvYmopXGIvZyxpPS9eKFxkKylccysoXGQrKVxzK29ialxiLyxhPW5ldyBVaW50OEFycmF5KFsxMTYsMTE0LDk3LDEwNSwxMDgsMTAxLDExNF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxzPW5ldyBVaW50OEFycmF5KFs0Nyw4OCw4MiwxMDEsMTAyXSk7dGhpcy5lbnRyaWVzLmxlbmd0aD0wO3RoaXMuX2NhY2hlTWFwLmNsZWFyKCk7Y29uc3Qgbj10aGlzLnN0cmVhbTtuLnBvcz0wO2NvbnN0IG89bi5nZXRCeXRlcygpLGc9Ynl0ZXNUb1N0cmluZyhvKSxjPW8ubGVuZ3RoO2xldCBDPW4uc3RhcnQ7Y29uc3QgaD1bXSxsPVtdO2Zvcig7QzxjOyl7bGV0IFE9b1tDXTtpZig5PT09UXx8MTA9PT1RfHwxMz09PVF8fDMyPT09USl7KytDO2NvbnRpbnVlfWlmKDM3PT09USl7ZG97KytDO2lmKEM+PWMpYnJlYWs7UT1vW0NdfXdoaWxlKDEwIT09USYmMTMhPT1RKTtjb250aW51ZX1jb25zdCBFPXJlYWRUb2tlbihvLEMpO2xldCB1O2lmKEUuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PUUubGVuZ3RofHwvXHMvLnRlc3QoRVs0XSkpKXtDKz1za2lwVW50aWwobyxDLGEpO2gucHVzaChDKTtDKz1za2lwVW50aWwobyxDLHIpfWVsc2UgaWYodT1pLmV4ZWMoRSkpe2NvbnN0IHQ9MHx1WzFdLGk9MHx1WzJdLGE9QytFLmxlbmd0aDtsZXQgcixoPSExO2lmKHRoaXMuZW50cmllc1t0XSl7aWYodGhpcy5lbnRyaWVzW3RdLmdlbj09PWkpdHJ5e25ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihuLm1ha2VTdWJTdHJlYW0oYSkpfSkuZ2V0T2JqKCk7aD0hMH1jYXRjaChlKXtlIGluc3RhbmNlb2YgUGFyc2VyRU9GRXhjZXB0aW9uP3dhcm4oYGluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCR7RX0pOiAiJHtlfSIuYCk6aD0hMH19ZWxzZSBoPSEwO2gmJih0aGlzLmVudHJpZXNbdF09e29mZnNldDpDLW4uc3RhcnQsZ2VuOmksdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9YTtjb25zdCBRPWUuZXhlYyhnKTtpZihRKXtyPWUubGFzdEluZGV4KzEtQztpZigiZW5kb2JqIiE9PVFbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7UVsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtyLT1RWzFdLmxlbmd0aCsxfX1lbHNlIHI9Yy1DO2NvbnN0IGQ9by5zdWJhcnJheShDLEMrciksZj1za2lwVW50aWwoZCwwLHMpO2lmKGY8ciYmZFtmKzVdPDY0KXtsLnB1c2goQy1uLnN0YXJ0KTt0aGlzLl94cmVmU3Rtcy5hZGQoQy1uLnN0YXJ0KX1DKz1yfWVsc2UgaWYoRS5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzddKSkpe2gucHVzaChDKTtjb25zdCBlPUMrRS5sZW5ndGg7bGV0IGk7dC5sYXN0SW5kZXg9ZTtjb25zdCBhPXQuZXhlYyhnKTtpZihhKXtpPXQubGFzdEluZGV4KzEtQztpZigic3RhcnR4cmVmIiE9PWFbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7YVsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7aS09YVsxXS5sZW5ndGgrMX19ZWxzZSBpPWMtQztDKz1pfWVsc2UgQys9RS5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiBsKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgUT1bXTtsZXQgRSx1LGQ9ITE7Zm9yKGNvbnN0IGUgb2YgaCl7bi5wb3M9ZTtjb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihuKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwLHJlY292ZXJ5TW9kZTohMH0pO2lmKCFpc0NtZCh0LmdldE9iaigpLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3QgaT10LmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBEaWN0KXtRLnB1c2goaSk7aS5oYXMoIkVuY3J5cHQiKSYmKGQ9ITApfX1mb3IoY29uc3QgZSBvZlsuLi5RLCJnZW5GYWxsYmFjayIsLi4uUV0pe2lmKCJnZW5GYWxsYmFjayI9PT1lKXtpZighdSlicmVhazt0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2s9ITA7Y29udGludWV9bGV0IHQ9ITE7dHJ5e2NvbnN0IGk9ZS5nZXQoIlJvb3QiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBhPWkuZ2V0KCJQYWdlcyIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IHI9YS5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihyKSYmKHQ9ITApfWNhdGNoKGUpe3U9ZTtjb250aW51ZX1pZih0JiYoIWR8fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTtFPWV9aWYoRSlyZXR1cm4gRTtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0saT1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGkuaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1pLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgYT1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCByLHM9YS5nZXRPYmooKTtpZihpc0NtZChzLCJ4cmVmIikpe3I9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKGEpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtzPXIuZ2V0KCJYUmVmU3RtIik7aWYoTnVtYmVyLmlzSW50ZWdlcihzKSYmIXRoaXMuX3hyZWZTdG1zLmhhcyhzKSl7dGhpcy5feHJlZlN0bXMuYWRkKHMpO3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzKTt0aGlzLiNUPz89c319ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0gaGVhZGVyIik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEuZ2V0T2JqKCkpJiZpc0NtZChhLmdldE9iaigpLCJvYmoiKSYmKHM9YS5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSIpO3I9dGhpcy5wcm9jZXNzWFJlZlN0cmVhbShzKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9cik7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGYWlsZWQgdG8gcmVhZCBYUmVmIHN0cmVhbSIpfXM9ci5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKHMpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzKTpzIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gocy5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufWdldCBsYXN0WFJlZlN0cmVhbVBvcygpe3JldHVybiB0aGlzLiNUPz8odGhpcy5feHJlZlN0bXMuc2l6ZT4wP01hdGgubWF4KC4uLnRoaXMuX3hyZWZTdG1zKTpudWxsKX1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoKGUsdCk6ZX1mZXRjaChlLHQ9ITEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IGk9ZS5udW0sYT10aGlzLl9jYWNoZU1hcC5nZXQoaSk7aWYodm9pZCAwIT09YSl7YSBpbnN0YW5jZW9mIERpY3QmJiFhLm9iaklkJiYoYS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBhfWxldCByPXRoaXMuZ2V0RW50cnkoaSk7aWYobnVsbD09PXIpe3RoaXMuX2NhY2hlTWFwLnNldChpLHIpO3JldHVybiByfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3dhcm4oYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbXR9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtyPXIudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxyLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscix0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9ciBpbnN0YW5jZW9mIERpY3Q/ci5vYmpJZD1lLnRvU3RyaW5nKCk6ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihyLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gcn1mZXRjaFVuY29tcHJlc3NlZChlLHQsaT0hMSl7Y29uc3QgYT1lLmdlbjtsZXQgcj1lLm51bTtpZih0LmdlbiE9PWEpe2NvbnN0IHM9YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48YSl7d2FybihzKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChSZWYuZ2V0KHIsdC5nZW4pLHQsaSl9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihzKX1jb25zdCBzPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLG49bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxvPW4uZ2V0T2JqKCksZz1uLmdldE9iaigpLGM9bi5nZXRPYmooKTtpZihvIT09cnx8ZyE9PWF8fCEoYyBpbnN0YW5jZW9mIENtZCkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWMuY21kKXtpZihjLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7cj1wYXJzZUludChjLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4ocikpcmV0dXJuIHJ9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFpP24uZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0ocixhKSk6bi5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW18fHRoaXMuX2NhY2hlTWFwLnNldChyLHQpO3JldHVybiB0fWZldGNoQ29tcHJlc3NlZChlLHQsaT0hMSl7Y29uc3QgYT10Lm9mZnNldCxyPXRoaXMuZmV0Y2goUmVmLmdldChhLDApKTtpZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3Qgcz1yLmRpY3QuZ2V0KCJGaXJzdCIpLG49ci5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihyKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgZz1uZXcgQXJyYXkobiksYz1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3QgaT1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2l9YCk7Z1tlXT10O2NbZV09aX1jb25zdCBDPShyLnN0YXJ0fHwwKStzLGg9bmV3IEFycmF5KG4pO2ZvcihsZXQgZT0wO2U8bjsrK2Upe2NvbnN0IHQ9ZTxuLTE/Y1tlKzFdLWNbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO289bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIubWFrZVN1YlN0cmVhbShDK2NbZV0sdCxyLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgaT1vLmdldE9iaigpO2hbZV09aTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSljb250aW51ZTtjb25zdCBzPWdbZV0sbD10aGlzLmVudHJpZXNbc107bCYmbC5vZmZzZXQ9PT1hJiZsLmdlbj09PWUmJnRoaXMuX2NhY2hlTWFwLnNldChzLGkpfWlmKHZvaWQgMD09PSh0PWhbdC5nZW5dKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgaTthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGkuYmVnaW4saS5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fWNvbnN0IG5vPVswLDAsNjEyLDc5Ml07Y2xhc3MgUGFnZXtjb25zdHJ1Y3Rvcih7cGRmTWFuYWdlcjplLHhyZWY6dCxwYWdlSW5kZXg6aSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTpzLGZvbnRDYWNoZTpuLGJ1aWx0SW5DTWFwQ2FjaGU6byxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6ZyxnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOkMsbm9uQmxlbmRNb2Rlc1NldDpoLHhmYUZhY3Rvcnk6bH0pe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMucGFnZUluZGV4PWk7dGhpcy5wYWdlRGljdD1hO3RoaXMueHJlZj10O3RoaXMucmVmPXI7dGhpcy5mb250Q2FjaGU9bjt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bzt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1nO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1jO3RoaXMuc3lzdGVtRm9udENhY2hlPUM7dGhpcy5ub25CbGVuZE1vZGVzU2V0PWg7dGhpcy5ldmFsdWF0b3JPcHRpb25zPWUuZXZhbHVhdG9yT3B0aW9uczt0aGlzLnJlc291cmNlc1Byb21pc2U9bnVsbDt0aGlzLnhmYUZhY3Rvcnk9bDtjb25zdCBRPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9Y2xhc3MgZXh0ZW5kcyBze3N0YXRpYyBjcmVhdGVPYmpJZCgpe3JldHVybmBwJHtpfV8keysrUS5vYmp9YH1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7cmV0dXJuYHAke3IudG9TdHJpbmcoKX1gfX19X2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSx0PSExKXtjb25zdCBpPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dGhpcy5wYWdlRGljdCxrZXk6ZSxnZXRBcnJheTp0LHN0b3BXaGVuRm91bmQ6ITF9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKT8xIT09aS5sZW5ndGgmJmlbMF1pbnN0YW5jZW9mIERpY3Q/RGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5Oml9KTppWzBdOml9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4gc2hhZG93KHRoaXMsInJlc291cmNlcyIsZSBpbnN0YW5jZW9mIERpY3Q/ZTpEaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PWxvb2t1cE5vcm1hbFJlY3QodGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLCEwKSxudWxsKTtpZih0KXtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxubyl9Z2V0IGNyb3BCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsImNyb3BCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2xldCBlPXRoaXMucGFnZURpY3QuZ2V0KCJVc2VyVW5pdCIpOygibnVtYmVyIiE9dHlwZW9mIGV8fGU8PTApJiYoZT0xKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IGk9VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihpJiZpWzJdLWlbMF0+MCYmaVszXS1pWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixpKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4gc2hhZG93KHRoaXMsInJvdGF0ZSIsZSl9X29uU3ViU3RyZWFtRXJyb3IoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWdldENvbnRlbnRTdHJlYW0oKXtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50IikudGhlbigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZTpBcnJheS5pc0FycmF5KGUpP25ldyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0oZSx0aGlzLl9vblN1YlN0cmVhbUVycm9yLmJpbmQodGhpcykpOm5ldyBOdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX0jSyhlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgZSlpZihhLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGEuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7YS5pZH1gKTtjb250aW51ZX1pZihhLmRlbGV0ZWQpe3QucHV0KGUsZSk7Y29udGludWV9aT8ucHV0KGUpO2EucmVmPWU7ZGVsZXRlIGEuaWR9fWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtpZih0aGlzLnhmYUZhY3RvcnkpdGhyb3cgbmV3IEVycm9yKCJYRkE6IENhbm5vdCBzYXZlIG5ldyBhbm5vdGF0aW9ucy4iKTtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHM9bmV3IFJlZlNldENhY2hlLG49bmV3IFJlZlNldDt0aGlzLiNLKGkscyxuKTtjb25zdCBvPXRoaXMucGFnZURpY3QsZz10aGlzLmFubm90YXRpb25zLmZpbHRlcigoZT0+IShlIGluc3RhbmNlb2YgUmVmJiZzLmhhcyhlKSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhyLHQsaSxhKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhbi5oYXMoZSkmJmcucHVzaChlKTtjb25zdCBDPW8uZ2V0KCJBbm5vdHMiKTtvLnNldCgiQW5ub3RzIixnKTtjb25zdCBoPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG8saCx0aGlzLnhyZWYpO0MmJm8uc2V0KCJBbm5vdHMiLEMpO2NvbnN0IGw9Yy5kZXBlbmRlbmNpZXM7bC5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpoLmpvaW4oIiIpfSwuLi5jLmFubm90YXRpb25zKTtmb3IoY29uc3QgZSBvZiBzKWwucHVzaCh7cmVmOmUsZGF0YTpudWxsfSk7cmV0dXJuIGx9c2F2ZShlLHQsaSl7Y29uc3QgYT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChpKSYmci5wdXNoKHMuc2F2ZShhLHQsaSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGx9KXtjb25zdCBuPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG89dGhpcy5sb2FkUmVzb3VyY2VzKFsiQ29sb3JTcGFjZSIsIkV4dEdTdGF0ZSIsIkZvbnQiLCJQYXR0ZXJuIiwiUHJvcGVydGllcyIsIlNoYWRpbmciLCJYT2JqZWN0Il0pLGg9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksRT10aGlzLnhmYUZhY3Rvcnk/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChzKSxkPUU/LmdldCh0aGlzLnBhZ2VJbmRleCk7bGV0IGY9UHJvbWlzZS5yZXNvbHZlKG51bGwpLHA9bnVsbDtpZihkKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIik7bGV0IHQ7Y29uc3QgYT1uZXcgU2V0O2Zvcihjb25zdHtiaXRtYXBJZDplLGJpdG1hcDp0fW9mIGQpIWV8fHR8fGEuaGFzKGUpfHxhLmFkZChlKTtjb25zdHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpyfT10aGlzLmV2YWx1YXRvck9wdGlvbnM7aWYoYS5zaXplPjApe2NvbnN0IGU9ZC5zbGljZSgpO2Zvcihjb25zdFt0LGldb2Ygcyl0LnN0YXJ0c1dpdGgodSkmJmkuYml0bWFwJiZhLmhhcyhpLmJpdG1hcElkKSYmZS5wdXNoKGkpO3Q9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoZSx0aGlzLnhyZWYscil9ZWxzZSB0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGQsdGhpcy54cmVmLHIpO3A9bmV3IFJlZlNldDt0aGlzLiNLKGQscCxudWxsKTtmPWUudGhlbigoZT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsaCxpLGQsdCk6bnVsbCkpfWNvbnN0IG09UHJvbWlzZS5hbGwoW24sb10pLnRoZW4oKChbc10pPT57Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0KGEsdCk7ZS5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6aC5oYXNCbGVuZE1vZGVzKHRoaXMucmVzb3VyY2VzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5OnJ9KTtyZXR1cm4gaC5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpzLHRhc2s6aSxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsb3BlcmF0b3JMaXN0Om59KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfSkpO3JldHVybiBQcm9taXNlLmFsbChbbSx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxmXSkudGhlbigoZnVuY3Rpb24oW2UsdCxyXSl7aWYocil7dD10LmZpbHRlcigoZT0+IShlLnJlZiYmcC5oYXMoZS5yZWYpKSkpO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgYT1yW2VdO2lmKGEucmVmVG9SZXBsYWNlKXtjb25zdCBzPXQuZmluZEluZGV4KChlPT5lLnJlZiYmaXNSZWZzRXF1YWwoZS5yZWYsYS5yZWZUb1JlcGxhY2UpKSk7aWYocz49MCl7dC5zcGxpY2UocywxLGEpO3Iuc3BsaWNlKGUtLSwxKTtpLS19fX10PXQuY29uY2F0KHIpfWlmKDA9PT10Lmxlbmd0aHx8YSZRKXtlLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fWNvbnN0IG49ISEoYSZsKSxvPSEhKGEmZyksRT0hIShhJmMpLHU9ISEoYSZDKSxkPVtdO2Zvcihjb25zdCBlIG9mIHQpKG98fEUmJmUubXVzdEJlVmlld2VkKHMsbil8fHUmJmUubXVzdEJlUHJpbnRlZChzKSkmJmQucHVzaChlLmdldE9wZXJhdG9yTGlzdChoLGksYSxuLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGQpLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsaSl7Y29uc3QgYT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Y29uc3Qgcj1bXSxzPVtdO2xldCBuO2NvbnN0IG89ISEoaSZnKSxoPSEhKGkmYyksbD0hIShpJkMpO2Zvcihjb25zdCBpIG9mIGEpe2NvbnN0IGE9b3x8aCYmaS52aWV3YWJsZTsoYXx8bCYmaS5wcmludGFibGUpJiZyLnB1c2goaS5kYXRhKTtpZihpLmhhc1RleHRDb250ZW50JiZhKXtufHw9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7cy5wdXNoKGkuZXh0cmFjdFRleHRDb250ZW50KG4sdCxbLTEvMCwtMS8wLDEvMCwxLzBdKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKHMpO3JldHVybiByfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKChhc3luYyBlPT57aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtpZighdClyZXR1cm5bXTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpaS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsYSx0LHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExLHRoaXMucmVmKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2NvbnN0IGE9W107bGV0IHIscztmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChpKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KHN8fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhyfHw9W10pLnB1c2goZSk6YS5wdXNoKGUpKTtzJiZhLnB1c2goLi4ucyk7ciYmYS5wdXNoKC4uLnIpO3JldHVybiBhfSkpKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LG1BKSl9fWNvbnN0IG9vPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLGdvPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksSW89bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxpPTEwMjQsYT0hMSl7Y29uc3Qgcj10Lmxlbmd0aCxzPWUucGVla0J5dGVzKGkpLG49cy5sZW5ndGgtcjtpZihuPD0wKXJldHVybiExO2lmKGEpe2NvbnN0IGk9ci0xO2xldCBhPXMubGVuZ3RoLTE7Zm9yKDthPj1pOyl7bGV0IG49MDtmb3IoO248ciYmc1thLW5dPT09dFtpLW5dOyluKys7aWYobj49cil7ZS5wb3MrPWEtaTtyZXR1cm4hMH1hLS19fWVsc2V7bGV0IGk9MDtmb3IoO2k8PW47KXtsZXQgYT0wO2Zvcig7YTxyJiZzW2krYV09PT10W2FdOylhKys7aWYoYT49cil7ZS5wb3MrPWk7cmV0dXJuITB9aSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBpPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2kuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPUxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGUpfXJldHVybiBzaGFkb3codGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtpZihmaW5kKGUsSW8pKXtlLnNraXAoNik7bGV0IGk9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5wb3MrKztpPWUucGVla0J5dGUoKX10PWUucG9zLWUuc3RhcnR9fWVsc2V7Y29uc3QgaT0xMDI0LGE9Z28ubGVuZ3RoO2xldCByPSExLHM9ZS5lbmQ7Zm9yKDshciYmcz4wOyl7cy09aS1hO3M8MCYmKHM9MCk7ZS5wb3M9cztyPWZpbmQoZSxnbyxpLCEwKX1pZihyKXtlLnNraXAoOSk7bGV0IGk7ZG97aT1lLmdldEJ5dGUoKX13aGlsZShpc1doaXRlU3BhY2UoaSkpO2xldCBhPSIiO2Zvcig7aT49MzImJmk8PTU3Oyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtpPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQoYSwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4gc2hhZG93KHRoaXMsInN0YXJ0WFJlZiIsdCl9Y2hlY2tIZWFkZXIoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2UucmVzZXQoKTtpZighZmluZChlLG9vKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAob28ubGVuZ3RoKTtsZXQgdCxpPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZpLmxlbmd0aDw3OylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO1N0LnRlc3QoaSk/dGhpcy5fdmVyc2lvbj1pOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2l9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9X2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSgoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBpPWlzTmFtZShlLmdldCgiRlQiKSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeSgoZT0+MD09PWUpKTtyZXR1cm4gaSYmcn0pKX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxpPXsieGRwOnhkcCI6IiIsdGVtcGxhdGU6IiIsZGF0YXNldHM6IiIsY29uZmlnOiIiLGNvbm5lY3Rpb25TZXQ6IiIsbG9jYWxlU2V0OiIiLHN0eWxlc2hlZXQ6IiIsIi94ZHA6eGRwIjoiIn07aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2lbInhkcDp4ZHAiXT10O3JldHVybiBpfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9Mil7bGV0IHI7cj0wPT09ZT8ieGRwOnhkcCI6ZT09PWEtMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWkuaGFzT3duUHJvcGVydHkocikpY29udGludWU7Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO3MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhcy5pc0VtcHR5JiYoaVtyXT1zKX1yZXR1cm4gaX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBpPWVbdF07aWYoaSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyhlKSlpZihhKXRyeXt0W2ldPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMgbG9hZFhmYUltYWdlcygpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0S2V5cygpLGk9bmV3IE9iamVjdExvYWRlcihlLHQsdGhpcy54cmVmKTthd2FpdCBpLmxvYWQoKTtjb25zdCBhPW5ldyBNYXA7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1lLmdldChpKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5zZXQoaSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoYSl9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgaT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighaSlyZXR1cm47Y29uc3QgYT1hd2FpdCBpLmdldEFzeW5jKCJEUiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPW5ldyBPYmplY3RMb2FkZXIoYSxbIkZvbnQiXSx0aGlzLnhyZWYpO2F3YWl0IHIubG9hZCgpO2NvbnN0IHM9YS5nZXQoIkZvbnQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO24udXNlU3lzdGVtRm9udHM9ITE7Y29uc3Qgbz1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmNhdGFsb2cuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5jYXRhbG9nLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuY2F0YWxvZy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsb3B0aW9uczpufSksZz1uZXcgT3BlcmF0b3JMaXN0LGM9W10sQz17Z2V0IGZvbnQoKXtyZXR1cm4gYy5hdCgtMSl9LHNldCBmb250KGUpe2MucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LGg9bmV3IE1hcDtzLmZvckVhY2goKChlLHQpPT57aC5zZXQoZSx0KX0pKTtjb25zdCBsPVtdO2Zvcihjb25zdFtlLGldb2YgaCl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmwucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsQyxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwobCk7Y29uc3QgUT10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIVEpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2wubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBFPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgUSlnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fEUuYWRkKGUpO0Uuc2l6ZSYmUS5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIFEpaWYoIUUuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtsLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LEMscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGwpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLEUpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1pLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGk7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9c3RyaW5nVG9CeXRlcyhlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihpPXN0cmluZ1RvQnl0ZXMoZVsxXSkpfWVsc2UgdD12cih0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGk/aGV4U3RyaW5nKGkpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246aSx4cmVmOmF9PXRoaXMscj1SZWYuZ2V0KGkub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgYS5mZXRjaEFzeW5jKHIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtsZXQgaT1lLmdldFJhdygiVHlwZSIpO2kgaW5zdGFuY2VvZiBSZWYmJihpPWF3YWl0IGEuZmV0Y2hBc3luYyhpKSk7aWYoaXNOYW1lKGksIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpJiZlLmhhcygiQ29udGVudHMiKSl7dC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKHIpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQociwxKTt0LnBhZ2VJbmRleENhY2hlLmhhcyhyKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQociwwKTtyZXR1cm5bZSxyXX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgTGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBQYWdlIGRpY3Rpb25hcnkuIil9Y2F0Y2goaSl7d2FybihgX2dldExpbmVhcml6YXRpb25QYWdlOiAiJHtpLm1lc3NhZ2V9Ii5gKTtyZXR1cm4gdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuX3BhZ2VQcm9taXNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmksbGluZWFyaXphdGlvbjphLHhmYUZhY3Rvcnk6cn09dGhpcztsZXQgcztzPXI/UHJvbWlzZS5yZXNvbHZlKFtEaWN0LmVtcHR5LG51bGxdKTphPy5wYWdlRmlyc3Q9PT1lP3RoaXMuX2dldExpbmVhcml6YXRpb25QYWdlKGUpOmkuZ2V0UGFnZURpY3QoZSk7cz1zLnRoZW4oKChbdCxhXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOmkuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6aS5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTppLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOmkuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6aS5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDppLm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpyfSkpKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyk7cmV0dXJuIHN9YXN5bmMgY2hlY2tGaXJzdFBhZ2UoZT0hMSl7aWYoIWUpdHJ5e2F3YWl0IHRoaXMuZ2V0UGFnZSgwKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOml9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCBhO3RyeXthd2FpdCBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxpLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGkuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47YT10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKGE8PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShhLTEpfWNhdGNoKHIpe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoYS0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihyIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHthfS5gKTtsZXQgczt0cnl7cz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChpKXtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFthLHJdXW9mIHMpe2xldCBzO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil7cz1Qcm9taXNlLnJlamVjdChhKTtzLmNhdGNoKCgoKT0+e30pKX1lbHNlIHM9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmkseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6YSxyZWY6cixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnQuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6dC5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bnVsbH0pKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyl9dC5zZXRBY3R1YWxOdW1QYWdlcyhzLnNpemUpfX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5jYXRhbG9nLmZvbnRGYWxsYmFjayhlLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTpjbGVhckdsb2JhbENhY2hlcygpfWFzeW5jI3EoZSx0LGksYSxyKXtjb25zdHt4cmVmOnN9PXRoaXM7aWYoISh0IGluc3RhbmNlb2YgUmVmKXx8ci5oYXModCkpcmV0dXJuO3IucHV0KHQpO2NvbnN0IG49YXdhaXQgcy5mZXRjaEFzeW5jKHQpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihuLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IG4uZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCB0PW47Zm9yKDs7KXt0PXQuZ2V0UmF3KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyh0KSlicmVhazt0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZih0LmhhcygiVCIpKXtjb25zdCBpPXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IHQuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/aTpgJHtlfS4ke2l9YDticmVha319fWkuaGFzKGUpfHxpLnNldChlLFtdKTtpLmdldChlKS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZShzLHQsYSxudWxsLCEwLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIW4uaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IG89YXdhaXQgbi5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGNvbnN0IHQgb2Ygbylhd2FpdCB0aGlzLiNxKGUsdCxpLGEscil9Z2V0IGZpZWxkT2JqZWN0cygpe2lmKCF0aGlzLmZvcm1JbmZvLmhhc0ZpZWxkcylyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKS50aGVuKChhc3luYyhbZSx0XSk9PntpZighZSlyZXR1cm4gbnVsbDtjb25zdCBpPW5ldyBSZWZTZXQsYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBhd2FpdCB0LmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNxKCIiLGEscixlLGkpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiByKXMucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKCh0PT57KHQ9dC5maWx0ZXIoKGU9PiEhZSkpKS5sZW5ndGg+MCYmKGFbZV09dCl9KSkpO2F3YWl0IFByb21pc2UuYWxsKHMpO3JldHVybiBhfSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0KS5zb21lKChlPT5lLnNvbWUoKGU9Pm51bGwhPT1lLmFjdGlvbnMpKSkpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWU/LmhhcygiQ08iKSlyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goZS50b1N0cmluZygpKTtyZXR1cm4gMD09PWkubGVuZ3RoP3NoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTpzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsaSl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIik7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBjbz0xLENvPTIsaG89MSxsbz0yLEJvPTMsUW89NCxFbz01LHVvPTYsZm89Nyxwbz04O2Z1bmN0aW9uIHdyYXBSZWFzb24oZSl7ZSBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHx1bnJlYWNoYWJsZSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2goZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IEFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfX1jbGFzcyBNZXNzYWdlSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9aTt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZT0+e2NvbnN0IHQ9ZS5kYXRhO2lmKHQudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYodC5zdHJlYW0pe3RoaXMuI08odCk7cmV0dXJufWlmKHQuY2FsbGJhY2spe2NvbnN0IGU9dC5jYWxsYmFja0lkLGk9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7ZX1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZih0LmNhbGxiYWNrPT09Y28paS5yZXNvbHZlKHQuZGF0YSk7ZWxzZXtpZih0LmNhbGxiYWNrIT09Q28pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtpLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscj10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UoYSh0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihhKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpyLGNhbGxiYWNrOmNvLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLGRhdGE6YX0pfSksKGZ1bmN0aW9uKGEpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6ZSx0YXJnZXROYW1lOnIsY2FsbGJhY2s6Q28sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24oYSl9KX0pKX1lbHNlIHQuc3RyZWFtSWQ/dGhpcy4jUCh0KTphKHQuZGF0YSl9O2kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfW9uKGUsdCl7Y29uc3QgaT10aGlzLmFjdGlvbkhhbmRsZXI7aWYoaVtlXSl0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIiR7ZX0iYCk7aVtlXT10fXNlbmQoZSx0LGkpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LGkpfXNlbmRXaXRoUHJvbWlzZShlLHQsaSl7Y29uc3QgYT10aGlzLmNhbGxiYWNrSWQrKyxyPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbYV09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6YSxkYXRhOnR9LGkpfWNhdGNoKGUpe3IucmVqZWN0KGUpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKysscz10aGlzLnNvdXJjZU5hbWUsbj10aGlzLnRhcmdldE5hbWUsbz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDppPT57Y29uc3QgZz1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdPXtjb250cm9sbGVyOmksc3RhcnRDYWxsOmcscHVsbENhbGw6bnVsbCxjYW5jZWxDYWxsOm51bGwsaXNDbG9zZWQ6ITF9O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sYWN0aW9uOmUsc3RyZWFtSWQ6cixkYXRhOnQsZGVzaXJlZFNpemU6aS5kZXNpcmVkU2l6ZX0sYSk7cmV0dXJuIGcucHJvbWlzZX0scHVsbDplPT57Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLnB1bGxDYWxsPXQ7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dW8sc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9Pnthc3NlcnQoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmNhbmNlbENhbGw9dDt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmlzQ2xvc2VkPSEwO28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOmhvLHN0cmVhbUlkOnIscmVhc29uOndyYXBSZWFzb24oZSl9KTtyZXR1cm4gdC5wcm9taXNlfX0saSl9I1AoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpRbyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkJvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkVvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobihlLmRhdGEsbykpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06cG8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06cG8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfSNPKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIHBvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGZvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSB1bzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Zm8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uobi5vblB1bGw/LigpKX0pKS50aGVuKChmdW5jdGlvbigpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmZvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmZvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIFFvOmFzc2VydChzLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIEJvOmFzc2VydChzLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHMuaXNDbG9zZWQpYnJlYWs7cy5pc0Nsb3NlZD0hMDtzLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNXKHMsdCk7YnJlYWs7Y2FzZSBFbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1cocyx0KTticmVhaztjYXNlIGxvOmUuc3VjY2Vzcz9zLmNhbmNlbENhbGwucmVzb2x2ZSgpOnMuY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1cocyx0KTticmVhaztjYXNlIGhvOmlmKCFuKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KG4ub25DYW5jZWw/Lih3cmFwUmVhc29uKGUucmVhc29uKSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06bG8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06bG8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtuLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jI1coZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXthc3NlcnQoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGk9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goaSk7cmV0dXJuIGl9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX21zZ0hhbmRsZXI9aTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCBhPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1hLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGk9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uKHQpe2lmKCFpKXtpPSEwO2Uuc2VuZCgidGVzdCIsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpfX0pKTtlLm9uKCJjb25maWd1cmUiLChmdW5jdGlvbihlKXshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKG50PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBXb3JrZXJNZXNzYWdlSGFuZGxlci5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KX0pKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC40LjE2OCI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgQz1bXTtmb3IoY29uc3QgZSBpbltdKUMucHVzaChlKTtpZihDLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitDLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IGw9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhsLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgQz17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOmwsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfSxoPVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBRO2lmKGUpe3RyeXtDLnNvdXJjZT1lO1E9bmV3IExvY2FsUGRmTWFuYWdlcihDKTtoLnJlc29sdmUoUSl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cmV0dXJuIGgucHJvbWlzZX1sZXQgRSx1PVtdO3RyeXtFPW5ldyBQREZXb3JrZXJTdHJlYW0obCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBkPUUuZ2V0RnVsbFJlYWRlcigpO2QuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoZC5pc1JhbmdlU3VwcG9ydGVkKXtDLnNvdXJjZT1FO0MubGVuZ3RoPWQuY29udGVudExlbmd0aDtDLmRpc2FibGVBdXRvRmV0Y2h8fD1kLmlzU3RyZWFtaW5nU3VwcG9ydGVkO1E9bmV3IE5ldHdvcmtQZGZNYW5hZ2VyKEMpO2Zvcihjb25zdCBlIG9mIHUpUS5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO3U9W107aC5yZXNvbHZlKFEpO3I9bnVsbH19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2gucmVqZWN0KGUpO3I9bnVsbH0pKTtsZXQgZj0wO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe1F8fGZ1bmN0aW9uKCl7Y29uc3QgZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKHUpO3MmJmUubGVuZ3RoIT09cyYmd2FybigicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7dHJ5e0Muc291cmNlPWU7UT1uZXcgTG9jYWxQZGZNYW5hZ2VyKEMpO2gucmVzb2x2ZShRKX1jYXRjaChlKXtoLnJlamVjdChlKX11PVtdfSgpO3I9bnVsbDtyZXR1cm59Zis9ZS5ieXRlTGVuZ3RoO2QuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fGwuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6Zix0b3RhbDpNYXRoLm1heChmLGQuY29udGVudExlbmd0aHx8MCl9KTtRP1Euc2VuZFByb2dyZXNzaXZlRGF0YShlKTp1LnB1c2goZSk7ZC5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2QucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtyPW51bGx9KSk7cj1mdW5jdGlvbihlKXtFLmNhbmNlbEFsbFJlcXVlc3RzKGUpfTtyZXR1cm4gaC5wcm9taXNlfWwub24oIkdldFBhZ2UiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2kuZW5zdXJlKGUsInJvdGF0ZSIpLGkuZW5zdXJlKGUsInJlZiIpLGkuZW5zdXJlKGUsInVzZXJVbml0IiksaS5lbnN1cmUoZSwidmlldyIpXSkudGhlbigoZnVuY3Rpb24oW2UsdCxpLGFdKXtyZXR1cm57cm90YXRlOmUscmVmOnQscmVmU3RyOnQ/LnRvU3RyaW5nKCk/P251bGwsdXNlclVuaXQ6aSx2aWV3OmF9fSkpfSkpfSkpO2wub24oIkdldFBhZ2VJbmRleCIsKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9UmVmLmdldChlLm51bSxlLmdlbik7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbdF0pfSkpO2wub24oIkdldERlc3RpbmF0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpfSkpO2wub24oIkdldERlc3RpbmF0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7bC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBhZ2VMYWJlbHMiKX0pKTtsLm9uKCJHZXRQYWdlTGF5b3V0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxheW91dCIpfSkpO2wub24oIkdldFBhZ2VNb2RlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZU1vZGUiKX0pKTtsLm9uKCJHZXRWaWV3ZXJQcmVmZXJlbmNlcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInZpZXdlclByZWZlcmVuY2VzIil9KSk7bC5vbigiR2V0T3BlbkFjdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wZW5BY3Rpb24iKX0pKTtsLm9uKCJHZXRBdHRhY2htZW50cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7bC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7bC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBpLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO2wub24oIkdldE91dGxpbmUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pKTtsLm9uKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pKTtsLm9uKCJHZXRQZXJtaXNzaW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KSk7bC5vbigiR2V0TWV0YWRhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2kuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxpLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTtsLm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KSk7bC5vbigiR2V0RGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTtsLm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBpLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oaSl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhhKTtyZXR1cm4gaS5nZXRBbm5vdGF0aW9uc0RhdGEobCxhLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3Rocm93IGV9KSl9KSl9KSk7bC5vbigiR2V0RmllbGRPYmplY3RzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKX0pKTtsLm9uKCJIYXNKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImhhc0pTQWN0aW9ucyIpfSkpO2wub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pKTtsLm9uKCJTYXZlRG9jdW1lbnQiLChhc3luYyBmdW5jdGlvbih7aXNQdXJlWGZhOmUsbnVtUGFnZXM6dCxhbm5vdGF0aW9uU3RvcmFnZTphLGZpbGVuYW1lOnJ9KXtjb25zdCBzPVtpLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksaS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLGkuZW5zdXJlRG9jKCJzdGFydFhSZWYiKSxpLmVuc3VyZURvYygieHJlZiIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpXSxuPVtdLG89ZT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGEpLFtnLGMsQyxoLFEsRSx1XT1hd2FpdCBQcm9taXNlLmFsbChzKSxkPVEudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbDtsZXQgZjtpZihvKXt1P2F3YWl0IHUuY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjppLHhyZWY6USxuZXdBbm5vdGF0aW9uc0J5UGFnZTpvfSkmJihmPXUpOmF3YWl0IFN0cnVjdFRyZWVSb290LmNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZCxwZGZNYW5hZ2VyOmksbmV3QW5ub3RhdGlvbnNCeVBhZ2U6b30pJiYoZj1udWxsKTtjb25zdCBlPUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGEudmFsdWVzKCksUSxpLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpLHQ9dm9pZCAwPT09Zj9uOltdO2Zvcihjb25zdFthLHJdb2Ygbyl0LnB1c2goaS5nZXRQYWdlKGEpLnRoZW4oKHQ9Pntjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBTYXZlIChlZGl0b3IpOiBwYWdlICR7YX1gKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMobCxpLHIsZSkuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGkpfSkpfSkpKTtudWxsPT09Zj9uLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigoYXN5bmMgZT0+e2F3YWl0IFN0cnVjdFRyZWVSb290LmNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOm8seHJlZjpRLGNhdGFsb2dSZWY6ZCxwZGZNYW5hZ2VyOmksbmV3UmVmczplfSk7cmV0dXJuIGV9KSkpOmYmJm4ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYyBlPT57YXdhaXQgZi51cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpvLHBkZk1hbmFnZXI6aSxuZXdSZWZzOmV9KTtyZXR1cm4gZX0pKSl9aWYoZSluLnB1c2goaS5zZXJpYWxpemVYZmFEYXRhKGEpKTtlbHNlIGZvcihsZXQgZT0wO2U8dDtlKyspbi5wdXNoKGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtyZXR1cm4gdC5zYXZlKGwsaSxhKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO2NvbnN0IHA9YXdhaXQgUHJvbWlzZS5hbGwobik7bGV0IG09W10seT1udWxsO2lmKGUpe3k9cFswXTtpZigheSlyZXR1cm4gZy5ieXRlc31lbHNle209cC5mbGF0KDIpO2lmKDA9PT1tLmxlbmd0aClyZXR1cm4gZy5ieXRlc31jb25zdCB3PUMmJmMgaW5zdGFuY2VvZiBEaWN0JiZtLnNvbWUoKGU9PmUubmVlZEFwcGVhcmFuY2VzKSksYj1jIGluc3RhbmNlb2YgRGljdCYmYy5nZXQoIlhGQSIpfHxudWxsO2xldCBEPW51bGwsUz0hMTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IobGV0IGU9MCx0PWIubGVuZ3RoO2U8dDtlKz0yKWlmKCJkYXRhc2V0cyI9PT1iW2VdKXtEPWJbZSsxXTtTPSEwfW51bGw9PT1EJiYoRD1RLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIGImJndhcm4oIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO2xldCBrPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUS50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1RLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIERpY3QmJnQuZm9yRWFjaCgoKHQsaSk9Pnsic3RyaW5nIj09dHlwZW9mIGkmJihlW3RdPXN0cmluZ1RvUERGU3RyaW5nKGkpKX0pKTtrPXtyb290UmVmOmQsZW5jcnlwdFJlZjpRLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOlEuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpRLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6US50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6RT9oOlEubGFzdFhSZWZTdHJlYW1Qb3M/P2gsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Zy5ieXRlcyx4cmVmSW5mbzprLG5ld1JlZnM6bSx4cmVmOlEsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpDLGFjcm9Gb3JtOmMseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KFEudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntRLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7bC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PXlBLklORk9TP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpsLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7cyYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKHIpO3IudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtsLm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3R7cGFnZUluZGV4OmEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfT1lO2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihlKXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK2EpO3N0YXJ0V29ya2VyVGFzayhpKTtjb25zdCBvPW4+PXlBLklORk9TP0RhdGUubm93KCk6MDtlLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpsLHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfSkudGhlbigoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGkpO28mJmluZm8oYHBhZ2U9JHthKzF9IC0gZ2V0VGV4dENvbnRlbnQ6IHRpbWU9YCsoRGF0ZS5ub3coKS1vKSsibXMiKTt0LmNsb3NlKCl9KSwoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtpLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KSl9KSl9KSk7bC5vbigiR2V0U3RydWN0VHJlZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7bC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZm9udEZhbGxiYWNrKGUuaWQsbCl9KSk7bC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmNsZWFudXAoITApfSkpO2wub24oIlRlcm1pbmF0ZSIsKGZ1bmN0aW9uKGUpe2E9ITA7Y29uc3QgdD1bXTtpZihpKXtpLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1pLmNsZWFudXAoKTt0LnB1c2goZSk7aT1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtyJiZyKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBzKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXtsLmRlc3Ryb3koKTtsPW51bGx9KSl9KSk7bC5vbigiUmVhZHkiLChmdW5jdGlvbih0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsLnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO2wuc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLGUpLnRoZW4oKGZ1bmN0aW9uKHtwYXNzd29yZDplfSl7ZmluaXNoV29ya2VyVGFzayh0KTtpLnVwZGF0ZVBhc3N3b3JkKGUpO3BkZk1hbmFnZXJSZWFkeSgpfSkpLmNhdGNoKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2sodCk7bC5zZW5kKCJEb2NFeGNlcHRpb24iLGUpfSkpfWVsc2UgZSBpbnN0YW5jZW9mIEludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBNaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uP2wuc2VuZCgiRG9jRXhjZXB0aW9uIixlKTpsLnNlbmQoIkRvY0V4Y2VwdGlvbiIsbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpO2dldFBkZk1hbmFnZXIoZSkudGhlbigoZnVuY3Rpb24oZSl7aWYoYSl7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9aT1lO2kucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZT0+e2wuc2VuZCgiRGF0YUxvYWRlZCIse2xlbmd0aDplLmJ5dGVzLmJ5dGVMZW5ndGh9KX0pKX0pKS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfShlKTtlPW51bGx9KSk7cmV0dXJuIGh9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBNZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJmZ1bmN0aW9uIGlzTWVzc2FnZVBvcnQoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucG9zdE1lc3NhZ2UmJiJvbm1lc3NhZ2UiaW4gZX0oc2VsZikmJldvcmtlck1lc3NhZ2VIYW5kbGVyLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKTt2YXIgbW89X193ZWJwYWNrX2V4cG9ydHNfXy5Xb3JrZXJNZXNzYWdlSGFuZGxlcjtleHBvcnR7bW8gYXMgV29ya2VyTWVzc2FnZUhhbmRsZXJ9Ow==";function uT(d,l,U){const Z=d.contentWindow.document.createElement("style");Z.textContent=`
|
||
@page {
|
||
margin: 3mm;
|
||
size: ${l}pt ${U}pt;
|
||
}
|
||
body {
|
||
margin: 0;
|
||
}
|
||
canvas {
|
||
width: 100%;
|
||
page-break-after: always;
|
||
page-break-before: avoid;
|
||
page-break-inside: avoid;
|
||
}
|
||
`,d.contentWindow.document.head.appendChild(Z),d.contentWindow.document.body.style.width="100%"}function oT(d){return new Promise(l=>{const U=document.createElement("iframe");U.width="0",U.height="0",U.style.position="absolute",U.style.top="0",U.style.left="0",U.style.border="none",U.style.overflow="hidden",U.onload=()=>l(U),d.appendChild(U)})}function yT(d,l){const U=URL.createObjectURL(new Blob([d],{type:"application/pdf"})),Z=document.createElement("a");Z.href=U,Z.download=l,Z.style.display="none",document.body.append(Z),Z.click(),setTimeout(()=>{URL.revokeObjectURL(U),document.body.removeChild(Z)},1e3)}function Dm(d){for(;d!=null&&d.firstChild;)d.removeChild(d.firstChild)}function Oi(d){d==null||d.querySelectorAll("canvas").forEach(l=>{var U;l.width=1,l.height=1,(U=l.getContext("2d"))==null||U.clearRect(0,0,1,1)})}function Im(d){return Object.prototype.hasOwnProperty.call(d,"_pdfInfo")}function tM({onError:d,onPasswordRequest:l,onProgress:U,source:Z}){const F=In(null),t=In(null);return lJ(()=>D(this,null,function*(){const c=Sb(Z);if(c){if(Im(c)){F.value=c;return}try{t.value=pT(c),l&&(t.value.onPassword=(W,Q)=>{l({callback:W,isWrongPassword:Q===XT.INCORRECT_PASSWORD})}),U&&(t.value.onProgress=U),F.value=yield t.value.promise}catch(W){if(F.value=null,d)d(W);else throw W}}})),nR(F,(c,W)=>{W==null||W.destroy()}),Be(()=>{var c,W,Q,a;(c=t.value)!=null&&c.onPassword&&(t.value.onPassword=null),(W=t.value)!=null&&W.onProgress&&(t.value.onProgress=null),(Q=t.value)==null||Q.destroy(),Im(Sb(Z))||(a=F.value)==null||a.destroy()}),{doc:F}}var DW={};DW.d=(d,l)=>{for(var U in l)DW.o(l,U)&&!DW.o(d,U)&&Object.defineProperty(d,U,{enumerable:!0,get:l[U]})};DW.o=(d,l)=>Object.prototype.hasOwnProperty.call(d,l);var il=globalThis.pdfjsViewer={};DW.d(il,{AnnotationLayerBuilder:()=>mM,DownloadManager:()=>YS,EventBus:()=>MM,FindState:()=>cZ,GenericL10n:()=>Es,LinkTarget:()=>nF,PDFFindController:()=>iS,PDFHistory:()=>SX,PDFLinkService:()=>bM,PDFPageView:()=>EM,PDFScriptingManager:()=>wX,PDFSinglePageViewer:()=>jX,PDFViewer:()=>vM,ProgressBar:()=>gT,RenderingStates:()=>Rl,ScrollMode:()=>$,SimpleLinkService:()=>Nb,SpreadMode:()=>Al,StructTreeLayerBuilder:()=>oM,TextLayerBuilder:()=>DM,XfaLayerBuilder:()=>IM,parseQueryString:()=>Ds});const kT="auto",cM=1,Em=1.1,LT=.1,zT=10,gi=0,DT=1.25,WM=40,VM=5,Rl={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},J0={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},cd={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},$={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},Al={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};class IT{constructor(){const l=window.devicePixelRatio||1;this.sx=l,this.sy=l}get scaled(){return this.sx!==1||this.sy!==1}}function QM(d,l,U=!1){let Z=d.offsetParent;if(!Z){console.error("offsetParent is not set -- cannot scroll");return}let F=d.offsetTop+d.clientTop,t=d.offsetLeft+d.clientLeft;for(;Z.clientHeight===Z.scrollHeight&&Z.clientWidth===Z.scrollWidth||U&&(Z.classList.contains("markedContent")||getComputedStyle(Z).overflow==="hidden");)if(F+=Z.offsetTop,t+=Z.offsetLeft,Z=Z.offsetParent,!Z)return;l&&(l.top!==void 0&&(F+=l.top),l.left!==void 0&&(t+=l.left,Z.scrollLeft=t)),Z.scrollTop=F}function ET(d,l,U=void 0){const Z=function(c){t||(t=window.requestAnimationFrame(function(){t=null;const W=d.scrollLeft,Q=F.lastX;W!==Q&&(F.right=W>Q),F.lastX=W;const a=d.scrollTop,n=F.lastY;a!==n&&(F.down=a>n),F.lastY=a,l(F)}))},F={right:!0,down:!0,lastX:d.scrollLeft,lastY:d.scrollTop,_eventHandler:Z};let t=null;return d.addEventListener("scroll",Z,{useCapture:!0,signal:U}),U==null||U.addEventListener("abort",()=>window.cancelAnimationFrame(t),{once:!0}),F}function Ds(d){const l=new Map;for(const[U,Z]of new URLSearchParams(d))l.set(U.toLowerCase(),Z);return l}const wm=/[\x00-\x1F]/g;function Rs(d,l=!1){return wm.test(d)?l?d.replaceAll(wm,U=>U==="\0"?"":" "):d.replaceAll("\0",""):d}function _W(d,l,U=0){let Z=U,F=d.length-1;if(F<0||!l(d[F]))return d.length;if(l(d[Z]))return Z;for(;Z<F;){const t=Z+F>>1,c=d[t];l(c)?F=t:Z=t+1}return Z}function Cm(d){if(Math.floor(d)===d)return[d,1];const l=1/d,U=8;if(l>U)return[1,U];if(Math.floor(l)===l)return[1,l];const Z=d>1?l:d;let F=0,t=1,c=1,W=1;for(;;){const a=F+c,n=t+W;if(n>U)break;Z<=a/n?(c=a,W=n):(F=a,t=n)}let Q;return Z-F/t<c/W-Z?Q=Z===d?[F,t]:[t,F]:Q=Z===d?[c,W]:[W,c],Q}function JQ(d,l){return d-d%l}function wT(d,l,U){if(d<2)return d;let Z=l[d].div,F=Z.offsetTop+Z.clientTop;F>=U&&(Z=l[d-1].div,F=Z.offsetTop+Z.clientTop);for(let t=d-2;t>=0&&(Z=l[t].div,!(Z.offsetTop+Z.clientTop+Z.clientHeight<=F));--t)d=t;return d}function CT({scrollEl:d,views:l,sortByVisibility:U=!1,horizontal:Z=!1,rtl:F=!1}){const t=d.scrollTop,c=t+d.clientHeight,W=d.scrollLeft,Q=W+d.clientWidth;function a(T){const G=T.div;return G.offsetTop+G.clientTop+G.clientHeight>t}function n(T){const G=T.div,Y=G.offsetLeft+G.clientLeft,S=Y+G.clientWidth;return F?Y<Q:S>W}const s=[],R=new Set,N=l.length;let h=_W(l,Z?n:a);h>0&&h<N&&!Z&&(h=wT(h,l,t));let e=Z?Q:-1;for(let T=h;T<N;T++){const G=l[T],Y=G.div,S=Y.offsetLeft+Y.clientLeft,X=Y.offsetTop+Y.clientTop,B=Y.clientWidth,k=Y.clientHeight,p=S+B,o=X+k;if(e===-1)o>=c&&(e=o);else if((Z?S:X)>e)break;if(o<=t||X>=c||p<=W||S>=Q)continue;const y=Math.max(0,t-X)+Math.max(0,o-c),I=Math.max(0,W-S)+Math.max(0,p-Q),E=(k-y)/k,O=(B-I)/B,r=E*O*100|0;s.push({id:G.id,x:S,y:X,view:G,percent:r,widthPercent:O*100|0}),R.add(G.id)}const M=s[0],J=s.at(-1);return U&&s.sort(function(T,G){const Y=T.percent-G.percent;return Math.abs(Y)>.001?-Y:T.id-G.id}),{first:M,last:J,views:s,ids:R}}function aM(d){return Number.isInteger(d)&&d%90===0}function xT(d){return Number.isInteger(d)&&Object.values($).includes(d)&&d!==$.UNKNOWN}function rT(d){return Number.isInteger(d)&&Object.values(Al).includes(d)&&d!==Al.UNKNOWN}function nM(d){return d.width<=d.height}new Promise(function(d){window.requestAnimationFrame(d)});const jT=document.documentElement.style;function OT(d,l,U){return Math.min(Math.max(d,l),U)}var QF,ot,yt,$c,kt;class gT{constructor(l){i(this,QF,null),i(this,ot,null),i(this,yt,0),i(this,$c,null),i(this,kt,!0),m(this,QF,l.classList),m(this,$c,l.style)}get percent(){return V(this,yt)}set percent(l){if(m(this,yt,OT(l,0,100)),isNaN(l)){V(this,QF).add("indeterminate");return}V(this,QF).remove("indeterminate"),V(this,$c).setProperty("--progressBar-percent",`${V(this,yt)}%`)}setWidth(l){if(!l)return;const U=l.parentNode.offsetWidth-l.offsetWidth;U>0&&V(this,$c).setProperty("--progressBar-end-offset",`${U}px`)}setDisableAutoFetch(l=5e3){isNaN(V(this,yt))||(V(this,ot)&&clearTimeout(V(this,ot)),this.show(),m(this,ot,setTimeout(()=>{m(this,ot,null),this.hide()},l)))}hide(){V(this,kt)&&(m(this,kt,!1),V(this,QF).add("hidden"))}show(){V(this,kt)||(m(this,kt,!0),V(this,QF).remove("hidden"))}}QF=new WeakMap,ot=new WeakMap,yt=new WeakMap,$c=new WeakMap,kt=new WeakMap;function KT(d){let l=$.VERTICAL,U=Al.NONE;switch(d){case"SinglePage":l=$.PAGE;break;case"OneColumn":break;case"TwoPageLeft":l=$.PAGE;case"TwoColumnLeft":U=Al.ODD;break;case"TwoPageRight":l=$.PAGE;case"TwoColumnRight":U=Al.EVEN;break}return{scrollMode:l,spreadMode:U}}const kU={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function vT(d){return d<11904}function HT(d){return(d&65408)===0}function PT(d){return d>=97&&d<=122||d>=65&&d<=90}function fT(d){return d>=48&&d<=57}function AT(d){return d===32||d===9||d===13||d===10}function _T(d){return d>=13312&&d<=40959||d>=63744&&d<=64255}function qT(d){return d>=12448&&d<=12543}function $T(d){return d>=12352&&d<=12447}function lS(d){return d>=65376&&d<=65439}function US(d){return(d&65408)===3584}function GQ(d){return vT(d)?HT(d)?AT(d)?kU.SPACE:PT(d)||fT(d)||d===95?kU.ALPHA_LETTER:kU.PUNCT:US(d)?kU.THAI_LETTER:d===160?kU.SPACE:kU.ALPHA_LETTER:_T(d)?kU.HAN_LETTER:qT(d)?kU.KATAKANA_LETTER:$T(d)?kU.HIRAGANA_LETTER:lS(d)?kU.HALFWIDTH_KATAKANA_LETTER:kU.ALPHA_LETTER}let Ki;function dS(){return Ki||(Ki=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),Ki}const cZ={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},ZS=250,FS=-50,tS=-400,xm={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},rm=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 vi;const cS=new RegExp("\\p{M}+","gu"),WS=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),VS=new RegExp("([^\\p{M}])\\p{M}*$","u"),QS=new RegExp("^\\p{M}*([^\\p{M}])","u"),aS=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,jm=new Map,nS="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",Om=new Map;let Hi=null,Pi=null;function fi(d){const l=[];let U;for(;(U=aS.exec(d))!==null;){let{index:N}=U;for(const h of U[0]){let e=jm.get(h);e||(e=h.normalize("NFD").length,jm.set(h,e)),l.push([e,N++])}}let Z;if(l.length===0&&Hi)Z=Hi;else if(l.length>0&&Pi)Z=Pi;else{const N=Object.keys(xm).join(""),h=dS(),e=`([${N}])|([${h}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|((?:\\p{Ideographic}|[-ヿ])\\n)|(\\n)`;l.length===0?Z=Hi=new RegExp(e+"|(\\u0000)","gum"):Z=Pi=new RegExp(e+`|(${nS})`,"gum")}const F=[];for(;(U=cS.exec(d))!==null;)F.push([U[0].length,U.index]);let t=d.normalize("NFD");const c=[[0,0]];let W=0,Q=0,a=0,n=0,s=0,R=!1;return t=t.replace(Z,(N,h,e,M,J,T,G,Y,S,X)=>{var B,k,p;if(X-=n,h){const o=xm[h],y=o.length;for(let I=1;I<y;I++)c.push([X-a+I,a-I]);return a-=y-1,o}if(e){let o=Om.get(e);o||(o=e.normalize("NFKC"),Om.set(e,o));const y=o.length;for(let I=1;I<y;I++)c.push([X-a+I,a-I]);return a-=y-1,o}if(M)return R=!0,X+s===((B=F[W])==null?void 0:B[1])?++W:(c.push([X-1-a+1,a-1]),a-=1,n+=1),c.push([X-a+1,a]),n+=1,s+=1,M.charAt(0);if(J){const o=J.endsWith(`
|
||
`),y=o?J.length-2:J.length;R=!0;let I=y;X+s===((k=F[W])==null?void 0:k[1])&&(I-=F[W][0],++W);for(let E=1;E<=I;E++)c.push([X-1-a+E,a-E]);return a-=I,n+=I,o?(X+=y-1,c.push([X-a+1,1+a]),a+=1,n+=1,s+=1,J.slice(0,y)):J}if(T){const o=T.length-2;return c.push([X-a+o,1+a]),a+=1,n+=1,s+=1,T.slice(0,-2)}if(G){const o=G.length-1;return c.push([X-a+o,a]),n+=1,s+=1,G.slice(0,-1)}if(Y)return c.push([X-a+1,a-1]),a-=1,n+=1,s+=1," ";if(X+s===((p=l[Q])==null?void 0:p[1])){const o=l[Q][0]-1;++Q;for(let y=1;y<=o;y++)c.push([X-(a-y),a-y]);a-=o,n+=o}return S}),c.push([t.length,a]),[t,c,R]}function sS(d,l,U){if(!d)return[l,U];const Z=l,F=l+U-1;let t=_W(d,a=>a[0]>=Z);d[t][0]>Z&&--t;let c=_W(d,a=>a[0]>=F,t);d[c][0]>F&&--c;const W=Z+d[t][1],Q=F+d[c][1]+1-W;return[W,Q]}var Cl,IW,Lt,th,sM,Ka,ch,va,Ai,Wh,gm,Vh,Km,Qh,vm,Ha,_i,ah,Hm,nh,Pm,lW,TQ,zt,Vc,aF,tt,sh,fm,Pa,qi,fa,$i,UW,SQ,ih,iM,Aa,lR,_a,UR,Dt,Qc;class iS{constructor({linkService:l,eventBus:U,updateMatchesCountOnProgress:Z=!0}){i(this,th),i(this,Ka),i(this,va),i(this,Wh),i(this,Vh),i(this,Qh),i(this,Ha),i(this,ah),i(this,nh),i(this,lW),i(this,zt),i(this,aF),i(this,sh),i(this,Pa),i(this,fa),i(this,UW),i(this,ih),i(this,Aa),i(this,_a),i(this,Dt),i(this,Cl,null),i(this,IW,!0),i(this,Lt,0),this._linkService=l,this._eventBus=U,m(this,IW,Z),this.onIsPageVisible=null,b(this,Ka,ch).call(this),U._on("find",b(this,th,sM).bind(this)),U._on("findbarclose",b(this,ih,iM).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 V(this,Cl)}setDocument(l){this._pdfDocument&&b(this,Ka,ch).call(this),l&&(this._pdfDocument=l,this._firstPageCapability.resolve())}scrollMatchIntoView({element:l=null,selectedLeft:U=0,pageIndex:Z=-1,matchIndex:F=-1}){if(!this._scrollMatches||!l||F===-1||F!==this._selected.matchIdx||Z===-1||Z!==this._selected.pageIdx)return;this._scrollMatches=!1;const t={top:FS,left:U+tS};QM(l,t,!0)}}Cl=new WeakMap,IW=new WeakMap,Lt=new WeakMap,th=new WeakSet,sM=function(d){if(!d)return;const l=this._pdfDocument,{type:U}=d;(V(this,Cl)===null||b(this,Wh,gm).call(this,d))&&(this._dirtyMatch=!0),m(this,Cl,d),U!=="highlightallchange"&&b(this,Dt,Qc).call(this,cZ.PENDING),this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||l&&this._pdfDocument!==l)return;b(this,nh,Pm).call(this);const Z=!this._highlightMatches,F=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),U?this._dirtyMatch?b(this,aF,tt).call(this):U==="again"?(b(this,aF,tt).call(this),Z&&V(this,Cl).highlightAll&&b(this,zt,Vc).call(this)):U==="highlightallchange"?(F?b(this,aF,tt).call(this):this._highlightMatches=!0,b(this,zt,Vc).call(this)):b(this,aF,tt).call(this):this._findTimeout=setTimeout(()=>{b(this,aF,tt).call(this),this._findTimeout=null},ZS)})},Ka=new WeakSet,ch=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],m(this,Lt,0),m(this,Cl,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()},va=new WeakSet,Ai=function(){const{query:d}=V(this,Cl);return typeof d=="string"?(d!==this._rawQuery&&(this._rawQuery=d,[this._normalizedQuery]=fi(d)),this._normalizedQuery):(d||[]).filter(l=>!!l).map(l=>fi(l)[0])},Wh=new WeakSet,gm=function(d){var t;var l;const U=d.query,Z=V(this,Cl).query,F=typeof U;if(F!==typeof Z)return!0;if(F==="string"){if(U!==Z)return!0}else if(JSON.stringify(U)!==JSON.stringify(Z))return!0;switch(d.type){case"again":const c=this._selected.pageIdx+1,W=this._linkService;return c>=1&&c<=W.pagesCount&&c!==W.page&&!((t=(l=this.onIsPageVisible)==null?void 0:l.call(this,c))==null||t);case"highlightallchange":return!1}return!0},Vh=new WeakSet,Km=function(d,l,U){let Z=d.slice(0,l).match(VS);if(Z){const F=d.charCodeAt(l),t=Z[1].charCodeAt(0);if(GQ(F)===GQ(t))return!1}if(Z=d.slice(l+U).match(QS),Z){const F=d.charCodeAt(l+U-1),t=Z[1].charCodeAt(0);if(GQ(F)===GQ(t))return!1}return!0},Qh=new WeakSet,vm=function(d,l,U,Z){const F=this._pageMatches[U]=[],t=this._pageMatchesLength[U]=[];if(!d)return;const c=this._pageDiffs[U];let W;for(;(W=d.exec(Z))!==null;){if(l&&!b(this,Vh,Km).call(this,Z,W.index,W[0].length))continue;const[Q,a]=sS(c,W.index,W[0].length);a&&(F.push(Q),t.push(a))}},Ha=new WeakSet,_i=function(d,l){const{matchDiacritics:U}=V(this,Cl);let Z=!1;d=d.replaceAll(WS,(t,c,W,Q,a,n)=>c?`[ ]*\\${c}[ ]*`:W?`[ ]*${W}[ ]*`:Q?"[ ]+":U?a||n:a?rm.has(a.charCodeAt(0))?a:"":l?(Z=!0,`${n}\\p{M}*`):n);const F="[ ]*";return d.endsWith(F)&&(d=d.slice(0,d.length-F.length)),U&&l&&(vi||(vi=String.fromCharCode(...rm)),Z=!0,d=`${d}(?=[${vi}]|[^\\p{M}]|$)`),[Z,d]},ah=new WeakSet,Hm=function(d){let l=V(this,va,Ai);if(l.length===0)return;const{caseSensitive:U,entireWord:Z}=V(this,Cl),F=this._pageContents[d],t=this._hasDiacritics[d];let c=!1;typeof l=="string"?[c,l]=b(this,Ha,_i).call(this,l,t):l=l.sort().reverse().map(a=>{const[n,s]=b(this,Ha,_i).call(this,a,t);return c||(c=n),`(${s})`}).join("|");const W=`g${c?"u":""}${U?"":"i"}`;l=l?new RegExp(l,W):null,b(this,Qh,vm).call(this,l,Z,d,F),V(this,Cl).highlightAll&&b(this,lW,TQ).call(this,d),this._resumePageIdx===d&&(this._resumePageIdx=null,b(this,Pa,qi).call(this));const Q=this._pageMatches[d].length;this._matchesCountTotal+=Q,V(this,IW)?Q>0&&b(this,_a,UR).call(this):++bU(this,Lt)._===this._linkService.pagesCount&&b(this,_a,UR).call(this)},nh=new WeakSet,Pm=function(){if(this._extractTextPromises.length>0)return;let d=Promise.resolve();const l={disableNormalization:!0};for(let U=0,Z=this._linkService.pagesCount;U<Z;U++){const{promise:F,resolve:t}=Promise.withResolvers();this._extractTextPromises[U]=F,d=d.then(()=>this._pdfDocument.getPage(U+1).then(c=>c.getTextContent(l)).then(c=>{const W=[];for(const Q of c.items)W.push(Q.str),Q.hasEOL&&W.push(`
|
||
`);[this._pageContents[U],this._pageDiffs[U],this._hasDiacritics[U]]=fi(W.join("")),t()},c=>{console.error(`Unable to get text content for page ${U+1}`,c),this._pageContents[U]="",this._pageDiffs[U]=null,this._hasDiacritics[U]=!1,t()}))}},lW=new WeakSet,TQ=function(d){this._scrollMatches&&this._selected.pageIdx===d&&(this._linkService.page=d+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:d})},zt=new WeakSet,Vc=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},aF=new WeakSet,tt=function(){const d=V(this,Cl).findPrevious,l=this._linkService.page-1,U=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=l,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,m(this,Lt,0),this._matchesCountTotal=0,b(this,zt,Vc).call(this);for(let F=0;F<U;F++)this._pendingFindMatches.has(F)||(this._pendingFindMatches.add(F),this._extractTextPromises[F].then(()=>{this._pendingFindMatches.delete(F),b(this,ah,Hm).call(this,F)}))}if(V(this,va,Ai).length===0){b(this,Dt,Qc).call(this,cZ.FOUND);return}if(this._resumePageIdx)return;const Z=this._offset;if(this._pagesToSearch=U,Z.matchIdx!==null){const F=this._pageMatches[Z.pageIdx].length;if(!d&&Z.matchIdx+1<F||d&&Z.matchIdx>0){Z.matchIdx=d?Z.matchIdx-1:Z.matchIdx+1,b(this,UW,SQ).call(this,!0);return}b(this,fa,$i).call(this,d)}b(this,Pa,qi).call(this)},sh=new WeakSet,fm=function(d){const l=this._offset,U=d.length,Z=V(this,Cl).findPrevious;return U?(l.matchIdx=Z?U-1:0,b(this,UW,SQ).call(this,!0),!0):(b(this,fa,$i).call(this,Z),l.wrapped&&(l.matchIdx=null,this._pagesToSearch<0)?(b(this,UW,SQ).call(this,!1),!0):!1)},Pa=new WeakSet,qi=function(){this._resumePageIdx!==null&&console.error("There can only be one pending page.");let d=null;do{const l=this._offset.pageIdx;if(d=this._pageMatches[l],!d){this._resumePageIdx=l;break}}while(!b(this,sh,fm).call(this,d))},fa=new WeakSet,$i=function(d){const l=this._offset,U=this._linkService.pagesCount;l.pageIdx=d?l.pageIdx-1:l.pageIdx+1,l.matchIdx=null,this._pagesToSearch--,(l.pageIdx>=U||l.pageIdx<0)&&(l.pageIdx=d?U-1:0,l.wrapped=!0)},UW=new WeakSet,SQ=function(d=!1){let l=cZ.NOT_FOUND;const U=this._offset.wrapped;if(this._offset.wrapped=!1,d){const Z=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,l=U?cZ.WRAPPED:cZ.FOUND,Z!==-1&&Z!==this._selected.pageIdx&&b(this,lW,TQ).call(this,Z)}b(this,Dt,Qc).call(this,l,V(this,Cl).findPrevious),this._selected.pageIdx!==-1&&(this._scrollMatches=!0,b(this,lW,TQ).call(this,this._selected.pageIdx))},ih=new WeakSet,iM=function(d){const l=this._pdfDocument;this._firstPageCapability.promise.then(()=>{!this._pdfDocument||l&&this._pdfDocument!==l||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),b(this,Dt,Qc).call(this,cZ.FOUND),this._highlightMatches=!1,b(this,zt,Vc).call(this))})},Aa=new WeakSet,lR=function(){var d;const{pageIdx:l,matchIdx:U}=this._selected;let Z=0,F=this._matchesCountTotal;if(U!==-1){for(let t=0;t<l;t++)Z+=((d=this._pageMatches[t])==null?void 0:d.length)||0;Z+=U+1}return(Z<1||Z>F)&&(Z=F=0),{current:Z,total:F}},_a=new WeakSet,UR=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:b(this,Aa,lR).call(this)})},Dt=new WeakSet,Qc=function(d,l=!1){var F,t;var U,Z;!V(this,IW)&&(V(this,Lt)!==this._linkService.pagesCount||d===cZ.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:d,previous:l,entireWord:(F=(U=V(this,Cl))==null?void 0:U.entireWord)!=null?F:null,matchesCount:b(this,Aa,lR).call(this),rawQuery:(t=(Z=V(this,Cl))==null?void 0:Z.query)!=null?t:null})};const RS="noopener noreferrer nofollow",nF={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var Rh,RM;const NM=class hM{constructor({eventBus:l,externalLinkTarget:U=null,externalLinkRel:Z=null,ignoreDestinationZoom:F=!1}={}){f(this,"externalLinkEnabled",!0),this.eventBus=l,this.externalLinkTarget=U,this.externalLinkRel=Z,this._ignoreDestinationZoom=F,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(l,U=null){this.baseUrl=U,this.pdfDocument=l}setViewer(l){this.pdfViewer=l}setHistory(l){this.pdfHistory=l}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(l){this.pdfDocument&&(this.pdfViewer.currentPageNumber=l)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(l){this.pdfDocument&&(this.pdfViewer.pagesRotation=l)}get isInPresentationMode(){return this.pdfDocument?this.pdfViewer.isInPresentationMode:!1}goToDestination(l){return D(this,null,function*(){if(!this.pdfDocument)return;let U,Z,F;if(typeof l=="string"?(U=l,Z=yield this.pdfDocument.getDestination(l)):(U=null,Z=yield l),!Array.isArray(Z)){console.error(`goToDestination: "${Z}" is not a valid destination array, for dest="${l}".`);return}const[t]=Z;if(t&&typeof t=="object"){if(F=this.pdfDocument.cachedPageNumber(t),!F)try{F=(yield this.pdfDocument.getPageIndex(t))+1}catch(c){console.error(`goToDestination: "${t}" is not a valid page reference, for dest="${l}".`);return}}else Number.isInteger(t)&&(F=t+1);if(!F||F<1||F>this.pagesCount){console.error(`goToDestination: "${F}" is not a valid page number, for dest="${l}".`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:U,explicitDest:Z,pageNumber:F})),this.pdfViewer.scrollPageIntoView({pageNumber:F,destArray:Z,ignoreDestinationZoom:this._ignoreDestinationZoom})})}goToPage(l){if(!this.pdfDocument)return;const U=typeof l=="string"&&this.pdfViewer.pageLabelToPageNumber(l)||l|0;if(!(Number.isInteger(U)&&U>0&&U<=this.pagesCount)){console.error(`PDFLinkService.goToPage: "${l}" is not a valid page.`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(U)),this.pdfViewer.scrollPageIntoView({pageNumber:U})}addLinkAttributes(l,U,Z=!1){if(!U||typeof U!="string")throw new Error('A valid "url" parameter must provided.');const F=Z?nF.BLANK:this.externalLinkTarget,t=this.externalLinkRel;this.externalLinkEnabled?l.href=l.title=U:(l.href="",l.title=`Disabled: ${U}`,l.onclick=()=>!1);let c="";switch(F){case nF.NONE:break;case nF.SELF:c="_self";break;case nF.BLANK:c="_blank";break;case nF.PARENT:c="_parent";break;case nF.TOP:c="_top";break}l.target=c,l.rel=typeof t=="string"?t:RS}getDestinationHash(l){if(typeof l=="string"){if(l.length>0)return this.getAnchorUrl("#"+escape(l))}else if(Array.isArray(l)){const U=JSON.stringify(l);if(U.length>0)return this.getAnchorUrl("#"+escape(U))}return this.getAnchorUrl("")}getAnchorUrl(l){return this.baseUrl?this.baseUrl+l:l}setHash(l){var U;if(!this.pdfDocument)return;let Z,F;if(l.includes("=")){const t=Ds(l);if(t.has("search")){const c=t.get("search").replaceAll('"',""),W=t.get("phrase")==="true";this.eventBus.dispatch("findfromurlhash",{source:this,query:W?c:c.match(/\S+/g)})}if(t.has("page")&&(Z=t.get("page")|0||1),t.has("zoom")){const c=t.get("zoom").split(","),W=c[0],Q=parseFloat(W);W.includes("Fit")?W==="Fit"||W==="FitB"?F=[null,{name:W}]:W==="FitH"||W==="FitBH"||W==="FitV"||W==="FitBV"?F=[null,{name:W},c.length>1?c[1]|0:null]:W==="FitR"?c.length!==5?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):F=[null,{name:W},c[1]|0,c[2]|0,c[3]|0,c[4]|0]:console.error(`PDFLinkService.setHash: "${W}" is not a valid zoom value.`):F=[null,{name:"XYZ"},c.length>1?c[1]|0:null,c.length>2?c[2]|0:null,Q?Q/100:W]}F?this.pdfViewer.scrollPageIntoView({pageNumber:Z||this.page,destArray:F,allowNegativeOffset:!0}):Z&&(this.page=Z),t.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:t.get("pagemode")}),t.has("nameddest")&&this.goToDestination(t.get("nameddest"));return}F=unescape(l);try{F=JSON.parse(F),Array.isArray(F)||(F=F.toString())}catch(t){}if(typeof F=="string"||b(U=hM,Rh,RM).call(U,F)){this.goToDestination(F);return}console.error(`PDFLinkService.setHash: "${unescape(l)}" is not a valid destination.`)}executeNamedAction(l){var U,Z;if(this.pdfDocument){switch(l){case"GoBack":(U=this.pdfHistory)==null||U.back();break;case"GoForward":(Z=this.pdfHistory)==null||Z.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:l})}}executeSetOCGState(l){return D(this,null,function*(){if(!this.pdfDocument)return;const U=this.pdfDocument,Z=yield this.pdfViewer.optionalContentConfigPromise;U===this.pdfDocument&&(Z.setOCGState(l),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(Z))})}};Rh=new WeakSet,RM=function(d){if(!Array.isArray(d)||d.length<2)return!1;const[l,U,...Z]=d;if(!(typeof l=="object"&&Number.isInteger(l==null?void 0:l.num)&&Number.isInteger(l==null?void 0:l.gen))&&!Number.isInteger(l)||!(typeof U=="object"&&typeof(U==null?void 0:U.name)=="string"))return!1;let F=!0;switch(U.name){case"XYZ":if(Z.length!==3)return!1;break;case"Fit":case"FitB":return Z.length===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(Z.length!==1)return!1;break;case"FitR":if(Z.length!==4)return!1;F=!1;break;default:return!1}for(const t of Z)if(!(typeof t=="number"||F&&t===null))return!1;return!0},i(NM,Rh);let bM=NM;class Nb extends bM{setDocument(l,U=null){}}const{AbortException:NS,AnnotationEditorLayer:hS,AnnotationEditorParamsType:NY,AnnotationEditorType:BZ,AnnotationEditorUIManager:bS,AnnotationLayer:mS,AnnotationMode:xd,build:hY,CMapCompressionType:bY,ColorPicker:mY,createValidAbsoluteUrl:eS,DOMSVGFactory:eY,DrawLayer:MS,FeatureTest:MY,fetchData:Am,getDocument:JY,getFilenameFromUrl:GY,getPdfFilenameFromUrl:JS,getXfaPageViewport:TY,GlobalWorkerOptions:SY,ImageKind:XY,InvalidPDFException:YY,isDataScheme:pY,isPdfFile:GS,MissingPDFException:BY,noContextMenu:uY,normalizeUnicode:TS,OPS:oY,Outliner:yY,PasswordResponses:kY,PDFDataRangeTransport:LY,PDFDateString:zY,PDFWorker:DY,PermissionFlag:XQ,PixelsPerInch:wd,RenderingCancelledException:hb,renderTextLayer:IY,setLayerDimensions:SS,shadow:Ns,TextLayer:XS,UnexpectedResponseException:EY,updateTextLayer:wY,Util:CY,VerbosityLevel:xY,version:_m,XfaLayer:dR}=globalThis.pdfjsLib;var qa,sF,$a,Nh;class mM{constructor({pdfPage:l,linkService:U,downloadManager:Z,annotationStorage:F=null,imageResourcesPath:t="",renderForms:c=!0,enableScripting:W=!1,hasJSActionsPromise:Q=null,fieldObjectsPromise:a=null,annotationCanvasMap:n=null,accessibilityManager:s=null,annotationEditorUIManager:R=null,onAppend:N=null}){i(this,$a),i(this,qa,null),i(this,sF,null),this.pdfPage=l,this.linkService=U,this.downloadManager=Z,this.imageResourcesPath=t,this.renderForms=c,this.annotationStorage=F,this.enableScripting=W,this._hasJSActionsPromise=Q||Promise.resolve(!1),this._fieldObjectsPromise=a||Promise.resolve(null),this._annotationCanvasMap=n,this._accessibilityManager=s,this._annotationEditorUIManager=R,m(this,qa,N),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=U.eventBus}render(l,U="display"){return D(this,null,function*(){var Z,F;if(this.div){if(this._cancelled||!this.annotationLayer)return;this.annotationLayer.update({viewport:l.clone({dontFlip:!0})});return}const[t,c,W]=yield Promise.all([this.pdfPage.getAnnotations({intent:U}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const Q=this.div=document.createElement("div");if(Q.className="annotationLayer",(Z=V(this,qa))==null||Z.call(this,Q),t.length===0){this.hide();return}this.annotationLayer=new mS({div:Q,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:l.clone({dontFlip:!0})}),yield this.annotationLayer.render({annotations:t,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:c,fieldObjects:W}),this.linkService.isInPresentationMode&&b(this,$a,Nh).call(this,J0.FULLSCREEN),V(this,sF)||(m(this,sF,new AbortController),(F=this._eventBus)==null||F._on("presentationmodechanged",a=>{b(this,$a,Nh).call(this,a.state)},{signal:V(this,sF).signal}))})}cancel(){var l;this._cancelled=!0,(l=V(this,sF))==null||l.abort(),m(this,sF,null)}hide(){this.div&&(this.div.hidden=!0)}}qa=new WeakMap,sF=new WeakMap,$a=new WeakSet,Nh=function(d){if(!this.div)return;let l=!1;switch(d){case J0.FULLSCREEN:l=!0;break;case J0.NORMAL:break;default:return}for(const U of this.div.childNodes)U.hasAttribute("data-internal-link")||(U.inert=l)};function qm(d,l){const U=document.createElement("a");if(!U.click)throw new Error('DownloadManager: "a.click()" is not supported.');U.href=d,U.target="_parent","download"in U&&(U.download=l),(document.body||document.documentElement).append(U),U.click(),U.remove()}var eM;class YS{constructor(){i(this,eM,new WeakMap)}downloadData(l,U,Z){const F=URL.createObjectURL(new Blob([l],{type:Z}));qm(F,U)}openOrDownloadData(l,U,Z=null){const F=GS(U)?"application/pdf":"";return this.downloadData(l,U,F),!1}download(l,U,Z,F){let t;if(l)t=URL.createObjectURL(new Blob([l],{type:"application/pdf"}));else{if(!eS(U,"http://example.com")){console.error(`download - not a valid URL: ${U}`);return}t=U+"#pdfjs.action=download"}qm(t,Z)}}eM=new WeakMap;const $m={EVENT:"event",TIMEOUT:"timeout"};function pS(Z){return D(this,arguments,function*({target:d,name:l,delay:U=0}){if(typeof d!="object"||!(l&&typeof l=="string")||!(Number.isInteger(U)&&U>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:F,resolve:t}=Promise.withResolvers(),c=new AbortController;function W(n){c.abort(),clearTimeout(a),t(n)}const Q=d instanceof MM?"_on":"addEventListener";d[Q](l,W.bind(null,$m.EVENT),{signal:c.signal});const a=setTimeout(W.bind(null,$m.TIMEOUT),U);return F})}var dW;class MM{constructor(){i(this,dW,Object.create(null))}on(l,U,Z=null){this._on(l,U,{external:!0,once:Z==null?void 0:Z.once,signal:Z==null?void 0:Z.signal})}off(l,U,Z=null){this._off(l,U)}dispatch(l,U){const Z=V(this,dW)[l];if(!Z||Z.length===0)return;let F;for(const{listener:t,external:c,once:W}of Z.slice(0)){if(W&&this._off(l,t),c){(F||(F=[])).push(t);continue}t(U)}if(F){for(const t of F)t(U);F=null}}_on(l,U,Z=null){var F;let t=null;if((Z==null?void 0:Z.signal)instanceof AbortSignal){const{signal:c}=Z;if(c.aborted){console.error("Cannot use an `aborted` signal.");return}const W=()=>this._off(l,U);t=()=>c.removeEventListener("abort",W),c.addEventListener("abort",W)}((F=V(this,dW))[l]||(F[l]=[])).push({listener:U,external:(Z==null?void 0:Z.external)===!0,once:(Z==null?void 0:Z.once)===!0,rmAbort:t})}_off(l,U,Z=null){var F;const t=V(this,dW)[l];if(t)for(let c=0,W=t.length;c<W;c++){const Q=t[c];if(Q.listener===U){(F=Q.rmAbort)==null||F.call(Q),t.splice(c,1);return}}}}dW=new WeakMap;class Is{constructor(l){this.value=l}valueOf(){return this.value}}class el extends Is{constructor(l="???"){super(l)}toString(l){return`{${this.value}}`}}class rd extends Is{constructor(l,U={}){super(l),this.opts=U}toString(l){try{return l.memoizeIntlObject(Intl.NumberFormat,this.opts).format(this.value)}catch(U){return l.reportError(U),this.value.toString(10)}}}class EW extends Is{constructor(l,U={}){super(l),this.opts=U}toString(l){try{return l.memoizeIntlObject(Intl.DateTimeFormat,this.opts).format(this.value)}catch(U){return l.reportError(U),new Date(this.value).toISOString()}}}const le=100,BS="",uS="";function oS(d,l,U){if(U===l||U instanceof rd&&l instanceof rd&&U.value===l.value)return!0;if(l instanceof rd&&typeof U=="string"){let Z=d.memoizeIntlObject(Intl.PluralRules,l.opts).select(l.value);if(U===Z)return!0}return!1}function Ue(d,l,U){return l[U]?B0(d,l[U].value):(d.reportError(new RangeError("No default")),new el)}function hh(d,l){const U=[],Z=Object.create(null);for(const F of l)F.type==="narg"?Z[F.name]=qW(d,F.value):U.push(qW(d,F));return{positional:U,named:Z}}function qW(d,l){switch(l.type){case"str":return l.value;case"num":return new rd(l.value,{minimumFractionDigits:l.precision});case"var":return yS(d,l);case"mesg":return kS(d,l);case"term":return LS(d,l);case"func":return zS(d,l);case"select":return DS(d,l);default:return new el}}function yS(d,{name:l}){let U;if(d.params)if(Object.prototype.hasOwnProperty.call(d.params,l))U=d.params[l];else return new el(`$${l}`);else if(d.args&&Object.prototype.hasOwnProperty.call(d.args,l))U=d.args[l];else return d.reportError(new ReferenceError(`Unknown variable: $${l}`)),new el(`$${l}`);if(U instanceof Is)return U;switch(typeof U){case"string":return U;case"number":return new rd(U);case"object":if(U instanceof Date)return new EW(U.getTime());default:return d.reportError(new TypeError(`Variable type not supported: $${l}, ${typeof U}`)),new el(`$${l}`)}}function kS(d,{name:l,attr:U}){const Z=d.bundle._messages.get(l);if(!Z)return d.reportError(new ReferenceError(`Unknown message: ${l}`)),new el(l);if(U){const F=Z.attributes[U];return F?B0(d,F):(d.reportError(new ReferenceError(`Unknown attribute: ${U}`)),new el(`${l}.${U}`))}return Z.value?B0(d,Z.value):(d.reportError(new ReferenceError(`No value: ${l}`)),new el(l))}function LS(d,{name:l,attr:U,args:Z}){const F=`-${l}`,t=d.bundle._terms.get(F);if(!t)return d.reportError(new ReferenceError(`Unknown term: ${F}`)),new el(F);if(U){const W=t.attributes[U];if(W){d.params=hh(d,Z).named;const Q=B0(d,W);return d.params=null,Q}return d.reportError(new ReferenceError(`Unknown attribute: ${U}`)),new el(`${F}.${U}`)}d.params=hh(d,Z).named;const c=B0(d,t.value);return d.params=null,c}function zS(d,{name:l,args:U}){let Z=d.bundle._functions[l];if(!Z)return d.reportError(new ReferenceError(`Unknown function: ${l}()`)),new el(`${l}()`);if(typeof Z!="function")return d.reportError(new TypeError(`Function ${l}() is not callable`)),new el(`${l}()`);try{let F=hh(d,U);return Z(F.positional,F.named)}catch(F){return d.reportError(F),new el(`${l}()`)}}function DS(d,{selector:l,variants:U,star:Z}){let F=qW(d,l);if(F instanceof el)return Ue(d,U,Z);for(const t of U){const c=qW(d,t.key);if(oS(d,F,c))return B0(d,t.value)}return Ue(d,U,Z)}function JM(d,l){if(d.dirty.has(l))return d.reportError(new RangeError("Cyclic reference")),new el;d.dirty.add(l);const U=[],Z=d.bundle._useIsolating&&l.length>1;for(const F of l){if(typeof F=="string"){U.push(d.bundle._transform(F));continue}if(d.placeables++,d.placeables>le)throw d.dirty.delete(l),new RangeError(`Too many placeables expanded: ${d.placeables}, max allowed is ${le}`);Z&&U.push(BS),U.push(qW(d,F).toString(d)),Z&&U.push(uS)}return d.dirty.delete(l),U.join("")}function B0(d,l){return typeof l=="string"?d.bundle._transform(l):JM(d,l)}class IS{constructor(l,U,Z){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=l,this.errors=U,this.args=Z}reportError(l){if(!this.errors||!(l instanceof Error))throw l;this.errors.push(l)}memoizeIntlObject(l,U){let Z=this.bundle._intls.get(l);Z||(Z={},this.bundle._intls.set(l,Z));let F=JSON.stringify(U);return Z[F]||(Z[F]=new l(this.bundle.locales,U)),Z[F]}}function hs(d,l){const U=Object.create(null);for(const[Z,F]of Object.entries(d))l.includes(Z)&&(U[Z]=F.valueOf());return U}const de=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function ES(d,l){let U=d[0];if(U instanceof el)return new el(`NUMBER(${U.valueOf()})`);if(U instanceof rd)return new rd(U.valueOf(),Nl(Nl({},U.opts),hs(l,de)));if(U instanceof EW)return new rd(U.valueOf(),Nl({},hs(l,de)));throw new TypeError("Invalid argument to NUMBER")}const Ze=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function wS(d,l){let U=d[0];if(U instanceof el)return new el(`DATETIME(${U.valueOf()})`);if(U instanceof EW)return new EW(U.valueOf(),Nl(Nl({},U.opts),hs(l,Ze)));if(U instanceof rd)return new EW(U.valueOf(),Nl({},hs(l,Ze)));throw new TypeError("Invalid argument to DATETIME")}const Fe=new Map;function CS(d){const l=Array.isArray(d)?d.join(" "):d;let U=Fe.get(l);return U===void 0&&(U=new Map,Fe.set(l,U)),U}class xS{constructor(l,{functions:U,useIsolating:Z=!0,transform:F=t=>t}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(l)?l:[l],this._functions=Nl({NUMBER:ES,DATETIME:wS},U),this._useIsolating=Z,this._transform=F,this._intls=CS(l)}hasMessage(l){return this._messages.has(l)}getMessage(l){return this._messages.get(l)}addResource(l,{allowOverrides:U=!1}={}){const Z=[];for(let F=0;F<l.body.length;F++){let t=l.body[F];if(t.id.startsWith("-")){if(U===!1&&this._terms.has(t.id)){Z.push(new Error(`Attempt to override an existing term: "${t.id}"`));continue}this._terms.set(t.id,t)}else{if(U===!1&&this._messages.has(t.id)){Z.push(new Error(`Attempt to override an existing message: "${t.id}"`));continue}this._messages.set(t.id,t)}}return Z}formatPattern(l,U=null,Z=null){if(typeof l=="string")return this._transform(l);let F=new IS(this,Z,U);try{return JM(F,l).toString(F)}catch(t){if(F.errors&&t instanceof Error)return F.errors.push(t),new el().toString(F);throw t}}}const ZR=/^(-?[a-zA-Z][\w-]*) *= */gm,te=/\.([a-zA-Z][\w-]*) *= */y,rS=/\*?\[/y,FR=/(-?[0-9]+(?:\.([0-9]+))?)/y,jS=/([a-zA-Z][\w-]*)/y,ce=/([$-])?([a-zA-Z][\w-]*)(?:\.([a-zA-Z][\w-]*))?/y,OS=/^[A-Z][A-Z0-9_-]*$/,YQ=/([^{}\n\r]+)/y,gS=/([^\\"\n\r]*)/y,We=/\\([\\"])/y,Ve=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{6})/y,KS=/^\n+/,Qe=/ +$/,vS=/ *\r?\n/g,HS=/( *)$/,PS=/{\s*/y,ae=/\s*}/y,fS=/\[\s*/y,AS=/\s*] */y,_S=/\s*\(\s*/y,qS=/\s*->\s*/y,$S=/\s*:\s*/y,lX=/\s*,?\s*/y,UX=/\s+/y;class dX{constructor(l){this.body=[],ZR.lastIndex=0;let U=0;for(;;){let p=ZR.exec(l);if(p===null)break;U=ZR.lastIndex;try{this.body.push(Q(p[1]))}catch(o){if(o instanceof SyntaxError)continue;throw o}}function Z(p){return p.lastIndex=U,p.test(l)}function F(p,o){if(l[U]===p)return U++,!0;if(o)throw new o(`Expected ${p}`);return!1}function t(p,o){if(Z(p))return U=p.lastIndex,!0;if(o)throw new o(`Expected ${p.toString()}`);return!1}function c(p){p.lastIndex=U;let o=p.exec(l);if(o===null)throw new SyntaxError(`Expected ${p.toString()}`);return U=p.lastIndex,o}function W(p){return c(p)[1]}function Q(p){let o=n(),y=a();if(o===null&&Object.keys(y).length===0)throw new SyntaxError("Expected message value or attributes");return{id:p,value:o,attributes:y}}function a(){let p=Object.create(null);for(;Z(te);){let o=W(te),y=n();if(y===null)throw new SyntaxError("Expected attribute value");p[o]=y}return p}function n(){let p;if(Z(YQ)&&(p=W(YQ)),l[U]==="{"||l[U]==="}")return s(p?[p]:[],1/0);let o=X();return o?p?s([p,o],o.length):(o.value=B(o.value,KS),s([o],o.length)):p?B(p,Qe):null}function s(p=[],o){for(;;){if(Z(YQ)){p.push(W(YQ));continue}if(l[U]==="{"){p.push(R());continue}if(l[U]==="}")throw new SyntaxError("Unbalanced closing brace");let O=X();if(O){p.push(O),o=Math.min(o,O.length);continue}break}let y=p.length-1,I=p[y];typeof I=="string"&&(p[y]=B(I,Qe));let E=[];for(let O of p)O instanceof ne&&(O=O.value.slice(0,O.value.length-o)),O&&E.push(O);return E}function R(){t(PS,SyntaxError);let p=N();if(t(ae))return p;if(t(qS)){let o=M();return t(ae,SyntaxError),Nl({type:"select",selector:p},o)}throw new SyntaxError("Unclosed placeable")}function N(){if(l[U]==="{")return R();if(Z(ce)){let[,p,o,y=null]=c(ce);if(p==="$")return{type:"var",name:o};if(t(_S)){let I=h();if(p==="-")return{type:"term",name:o,attr:y,args:I};if(OS.test(o))return{type:"func",name:o,args:I};throw new SyntaxError("Function names must be all upper-case")}return p==="-"?{type:"term",name:o,attr:y,args:[]}:{type:"mesg",name:o,attr:y}}return T()}function h(){let p=[];for(;;){switch(l[U]){case")":return U++,p;case void 0:throw new SyntaxError("Unclosed argument list")}p.push(e()),t(lX)}}function e(){let p=N();return p.type!=="mesg"?p:t($S)?{type:"narg",name:p.name,value:T()}:p}function M(){let p=[],o=0,y;for(;Z(rS);){F("*")&&(y=o);let I=J(),E=n();if(E===null)throw new SyntaxError("Expected variant value");p[o++]={key:I,value:E}}if(o===0)return null;if(y===void 0)throw new SyntaxError("Expected default variant");return{variants:p,star:y}}function J(){t(fS,SyntaxError);let p;return Z(FR)?p=G():p={type:"str",value:W(jS)},t(AS,SyntaxError),p}function T(){if(Z(FR))return G();if(l[U]==='"')return Y();throw new SyntaxError("Invalid expression")}function G(){let[,p,o=""]=c(FR),y=o.length;return{type:"num",value:parseFloat(p),precision:y}}function Y(){F('"',SyntaxError);let p="";for(;;){if(p+=W(gS),l[U]==="\\"){p+=S();continue}if(F('"'))return{type:"str",value:p};throw new SyntaxError("Unclosed string literal")}}function S(){if(Z(We))return W(We);if(Z(Ve)){let[,p,o]=c(Ve),y=parseInt(p||o,16);return y<=55295||57344<=y?String.fromCodePoint(y):"<22>"}throw new SyntaxError("Unknown escape sequence")}function X(){let p=U;switch(t(UX),l[U]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return k(l.slice(p,U))}return l[U-1]===" "?k(l.slice(p,U)):!1}function B(p,o){return p.replace(o,"")}function k(p){let o=p.replace(vS,`
|
||
`),y=HS.exec(p)[1].length;return new ne(o,y)}}}class ne{constructor(l,U){this.value=l,this.length=U}}const ZX=/<|&#?\w+;/,FX={"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"]},tX={"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 cX(d,l){const{value:U}=l;if(typeof U=="string")if(d.localName==="title"&&d.namespaceURI==="http://www.w3.org/1999/xhtml")d.textContent=U;else if(!ZX.test(U))d.textContent=U;else{const Z=d.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");Z.innerHTML=U,WX(Z.content,d)}GM(l,d)}function WX(d,l){for(const U of d.childNodes)if(U.nodeType!==U.TEXT_NODE){if(U.hasAttribute("data-l10n-name")){const Z=QX(l,U);d.replaceChild(Z,U);continue}if(nX(U)){const Z=aX(U);d.replaceChild(Z,U);continue}console.warn(`An element of forbidden type "${U.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),d.replaceChild(bh(U),U)}l.textContent="",l.appendChild(d)}function VX(d,l){if(!d)return!1;for(let U of d)if(U.name===l)return!0;return!1}function GM(d,l){const U=l.hasAttribute("data-l10n-attrs")?l.getAttribute("data-l10n-attrs").split(",").map(Z=>Z.trim()):null;for(const Z of Array.from(l.attributes))se(Z.name,l,U)&&!VX(d.attributes,Z.name)&&l.removeAttribute(Z.name);if(d.attributes)for(const Z of Array.from(d.attributes))se(Z.name,l,U)&&l.getAttribute(Z.name)!==Z.value&&l.setAttribute(Z.name,Z.value)}function QX(d,l){const U=l.getAttribute("data-l10n-name"),Z=d.querySelector(`[data-l10n-name="${U}"]`);if(!Z)return console.warn(`An element named "${U}" wasn't found in the source.`),bh(l);if(Z.localName!==l.localName)return console.warn(`An element named "${U}" was found in the translation but its type ${l.localName} didn't match the element found in the source (${Z.localName}).`),bh(l);d.removeChild(Z);const F=Z.cloneNode(!1);return TM(l,F)}function aX(d){const l=d.ownerDocument.createElement(d.localName);return TM(d,l)}function bh(d){return d.ownerDocument.createTextNode(d.textContent)}function nX(d){const l=FX[d.namespaceURI];return l&&l.includes(d.localName)}function se(d,l,U=null){if(U&&U.includes(d))return!0;const Z=tX[l.namespaceURI];if(!Z)return!1;const F=d.toLowerCase(),t=l.localName;if(Z.global.includes(F))return!0;if(!Z[t])return!1;if(Z[t].includes(F))return!0;if(l.namespaceURI==="http://www.w3.org/1999/xhtml"&&t==="input"&&F==="value"){const c=l.type.toLowerCase();if(c==="submit"||c==="button"||c==="reset")return!0}return!1}function TM(d,l){return l.textContent=d.textContent,GM(d,l),l}class sX extends Array{static from(l){return l instanceof this?l:new this(l)}}class iX extends sX{constructor(l){if(super(),Symbol.asyncIterator in Object(l))this.iterator=l[Symbol.asyncIterator]();else if(Symbol.iterator in Object(l))this.iterator=l[Symbol.iterator]();else throw new TypeError("Argument must implement the iteration protocol.")}[Symbol.asyncIterator](){const l=this;let U=0;return{next(){return D(this,null,function*(){return l.length<=U&&l.push(l.iterator.next()),l[U++]})}}}touchNext(l=1){return D(this,null,function*(){let U=0;for(;U++<l;){const Z=this[this.length-1];if(Z&&(yield Z).done)break;this.push(this.iterator.next())}return this[this.length-1]})}}class RX{constructor(l=[],U){this.resourceIds=l,this.generateBundles=U,this.onChange(!0)}addResourceIds(l,U=!1){return this.resourceIds.push(...l),this.onChange(U),this.resourceIds.length}removeResourceIds(l){return this.resourceIds=this.resourceIds.filter(U=>!l.includes(U)),this.onChange(),this.resourceIds.length}formatWithFallback(l,U){return D(this,null,function*(){const Z=[];let F=!1;try{for(var t=Tb(this.bundles),c,W,Q;c=!(W=yield t.next()).done;c=!1){const a=W.value;F=!0;const n=bX(U,a,l,Z);if(n.size===0)break;if(typeof console<"u"){const s=a.locales[0],R=Array.from(n).join(", ");console.warn(`[fluent] Missing translations in ${s}: ${R}`)}}}catch(W){Q=[W]}finally{try{c&&(W=t.return)&&(yield W.call(t))}finally{if(Q)throw Q[0]}}return!F&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
|
||
keys: ${JSON.stringify(l)}.
|
||
resourceIds: ${JSON.stringify(this.resourceIds)}.`),Z})}formatMessages(l){return this.formatWithFallback(l,hX)}formatValues(l){return this.formatWithFallback(l,NX)}formatValue(l,U){return D(this,null,function*(){const[Z]=yield this.formatValues([{id:l,args:U}]);return Z})}handleEvent(){this.onChange()}onChange(l=!1){this.bundles=iX.from(this.generateBundles(this.resourceIds)),l&&this.bundles.touchNext(2)}}function NX(d,l,U,Z){return U.value?d.formatPattern(U.value,Z,l):null}function hX(d,l,U,Z){const F={value:null,attributes:null};U.value&&(F.value=d.formatPattern(U.value,Z,l));let t=Object.keys(U.attributes);if(t.length>0){F.attributes=new Array(t.length);for(let[c,W]of t.entries()){let Q=d.formatPattern(U.attributes[W],Z,l);F.attributes[c]={name:W,value:Q}}}return F}function bX(d,l,U,Z){const F=[],t=new Set;return U.forEach(({id:c,args:W},Q)=>{if(Z[Q]!==void 0)return;let a=l.getMessage(c);if(a){if(F.length=0,Z[Q]=d(l,F,a,W),F.length>0&&typeof console<"u"){const n=l.locales[0],s=F.join(", ");console.warn(`[fluent][resolver] errors in ${n}/${c}: ${s}.`)}}else t.add(c)}),t}const iF="data-l10n-id",ac="data-l10n-args",mX=`[${iF}]`;class eX extends RX{constructor(l,U){super(l,U),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:[iF,ac]}}onChange(l=!1){super.onChange(l),this.roots&&this.translateRoots()}setAttributes(l,U,Z){return l.setAttribute(iF,U),Z?l.setAttribute(ac,JSON.stringify(Z)):l.removeAttribute(ac),l}getAttributes(l){return{id:l.getAttribute(iF),args:JSON.parse(l.getAttribute(ac)||null)}}connectRoot(l){for(const U of this.roots)if(U===l||U.contains(l)||l.contains(U))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==l.ownerDocument.defaultView)throw new Error(`Cannot connect a root:
|
||
DOMLocalization already has a root from a different window.`)}else this.windowElement=l.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver(U=>this.translateMutations(U));this.roots.add(l),this.mutationObserver.observe(l,this.observerConfig)}disconnectRoot(l){return this.roots.delete(l),this.pauseObserving(),this.roots.size===0?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const l=Array.from(this.roots);return Promise.all(l.map(U=>this.translateFragment(U)))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const l of this.roots)this.mutationObserver.observe(l,this.observerConfig)}translateMutations(l){for(const U of l)switch(U.type){case"attributes":U.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(U.target);break;case"childList":for(const Z of U.addedNodes)if(Z.nodeType===Z.ELEMENT_NODE)if(Z.childElementCount)for(const F of this.getTranslatables(Z))this.pendingElements.add(F);else Z.hasAttribute(iF)&&this.pendingElements.add(Z);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(l){return this.translateElements(this.getTranslatables(l))}translateElements(l){return D(this,null,function*(){if(!l.length)return;const U=l.map(this.getKeysForElement),Z=yield this.formatMessages(U);return this.applyTranslations(l,Z)})}applyTranslations(l,U){this.pauseObserving();for(let Z=0;Z<l.length;Z++)U[Z]!==void 0&&cX(l[Z],U[Z]);this.resumeObserving()}getTranslatables(l){const U=Array.from(l.querySelectorAll(mX));return typeof l.hasAttribute=="function"&&l.hasAttribute(iF)&&U.push(l),U}getKeysForElement(l){return{id:l.getAttribute(iF),args:JSON.parse(l.getAttribute(ac)||null)}}}var ln,ZW,FW,SU,mh,SM,eh,XM;const Mh=class Jh{constructor({lang:l,isRTL:U},Z=null){i(this,ln,void 0),i(this,ZW,new Set),i(this,FW,void 0),i(this,SU,void 0);var F,t;m(this,FW,b(F=Jh,mh,SM).call(F,l)),m(this,SU,Z),m(this,ln,(U!=null?U:b(t=Jh,eh,XM).call(t,V(this,FW)))?"rtl":"ltr")}_setL10n(l){m(this,SU,l)}getLanguage(){return V(this,FW)}getDirection(){return V(this,ln)}get(l,U=null,Z){return D(this,null,function*(){if(Array.isArray(l))return l=l.map(t=>({id:t})),(yield V(this,SU).formatMessages(l)).map(t=>t.value);const F=yield V(this,SU).formatMessages([{id:l,args:U}]);return(F==null?void 0:F[0].value)||Z})}translate(l){return D(this,null,function*(){V(this,ZW).add(l);try{V(this,SU).connectRoot(l),yield V(this,SU).translateRoots()}catch(U){}})}destroy(){return D(this,null,function*(){for(const l of V(this,ZW))V(this,SU).disconnectRoot(l);V(this,ZW).clear(),V(this,SU).pauseObserving()})}pause(){V(this,SU).pauseObserving()}resume(){V(this,SU).resumeObserving()}};ln=new WeakMap,ZW=new WeakMap,FW=new WeakMap,SU=new WeakMap,mh=new WeakSet,SM=function(d){return d=(d==null?void 0:d.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"}[d]||d},eh=new WeakSet,XM=function(d){const l=d.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(l)},i(Mh,mh),i(Mh,eh);let MX=Mh;function ie(d,l){const U=new dX(l),Z=new xS(d),F=Z.addResource(U);return F.length&&console.error("L10n errors",F),Z}var Gh,YM,tR,Re,cR,Ne,Th,pM,pQ,WR;const It=class tW extends MX{constructor(l){super({lang:l});const U=l?b(tW,Gh,YM).bind(tW,"en-us",this.getLanguage()):b(tW,Th,pM).bind(tW,this.getLanguage());this._setL10n(new eX([],U))}};Gh=new WeakSet,YM=function(d,l){return xs(this,null,function*(){const{baseURL:U,paths:Z}=yield new cV(b(this,cR,Ne).call(this)),F=[l];if(d!==l){const t=l.split("-",1)[0];t!==l&&F.push(t),F.push(d)}for(const t of F){const c=yield new cV(b(this,tR,Re).call(this,t,U,Z));c?yield c:t==="en-us"&&(yield b(this,pQ,WR).call(this,t))}})},tR=new WeakSet,Re=function(d,l,U){return D(this,null,function*(){const Z=U[d];if(!Z)return null;const F=new URL(Z,l),t=yield Am(F,"text");return ie(d,t)})},cR=new WeakSet,Ne=function(){return D(this,null,function*(){try{const{href:d}=document.querySelector('link[type="application/l10n"]'),l=yield Am(d,"json");return{baseURL:d.replace(/[^/]*$/,"")||"./",paths:l}}catch(d){}return{baseURL:"./",paths:Object.create(null)}})},Th=new WeakSet,pM=function(d){return xs(this,null,function*(){yield b(this,pQ,WR).call(this,d)})},pQ=new WeakSet,WR=function(d){return D(this,null,function*(){return ie(d,`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`)})},i(It,Gh),i(It,tR),i(It,cR),i(It,Th),i(It,pQ);let Es=It;const JX=1e3,GX=50,TX=1e3;function Sh(){return document.location.hash}var RF,td,Cd,wW,Un,CW,bs,V0,xW,rW,dn,ms,Xh,Yh,he,ph,be,es,Bh,uh,BM,oh,uM;class SX{constructor({linkService:l,eventBus:U}){i(this,td),i(this,wW),i(this,CW),i(this,V0),i(this,rW),i(this,ms),i(this,Yh),i(this,ph),i(this,es),i(this,uh),i(this,oh),i(this,RF,null),this.linkService=l,this.eventBus=U,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",Z=>{this._isPagesLoaded=!!Z.pagesCount},{once:!0})})}initialize({fingerprint:l,resetHistory:U=!1,updateUrl:Z=!1}){if(!l||typeof l!="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return}this._initialized&&this.reset();const F=this._fingerprint!==""&&this._fingerprint!==l;this._fingerprint=l,this._updateUrl=Z===!0,this._initialized=!0,b(this,uh,BM).call(this);const t=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=Sh(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!b(this,V0,xW).call(this,t,!0)||U){const{hash:W,page:Q,rotation:a}=b(this,ms,Xh).call(this,!0);if(!W||F||U){b(this,td,Cd).call(this,null,!0);return}b(this,td,Cd).call(this,{hash:W,page:Q,rotation:a},!0);return}const c=t.destination;b(this,rW,dn).call(this,c,t.uid,!0),c.rotation!==void 0&&(this._initialRotation=c.rotation),c.dest?(this._initialBookmark=JSON.stringify(c.dest),this._destination.page=null):c.hash?this._initialBookmark=c.hash:c.page&&(this._initialBookmark=`page=${c.page}`)}reset(){this._initialized&&(b(this,es,Bh).call(this),this._initialized=!1,b(this,oh,uM).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:l=null,explicitDest:U,pageNumber:Z}){if(!this._initialized)return;if(l&&typeof l!="string"){console.error(`PDFHistory.push: "${l}" is not a valid namedDest parameter.`);return}else if(Array.isArray(U)){if(!b(this,CW,bs).call(this,Z)&&(Z!==null||this._destination)){console.error(`PDFHistory.push: "${Z}" is not a valid pageNumber parameter.`);return}}else{console.error(`PDFHistory.push: "${U}" is not a valid explicitDest parameter.`);return}const F=l||JSON.stringify(U);if(!F)return;let t=!1;if(this._destination&&(XX(this._destination.hash,F)||YX(this._destination.dest,U))){if(this._destination.page)return;t=!0}this._popStateInProgress&&!t||(b(this,td,Cd).call(this,{dest:U,hash:F,page:Z,rotation:this.linkService.rotation},t),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1})))}pushPage(l){var U;if(this._initialized){if(!b(this,CW,bs).call(this,l)){console.error(`PDFHistory.pushPage: "${l}" is not a valid page number.`);return}((U=this._destination)==null?void 0:U.page)!==l&&(this._popStateInProgress||(b(this,td,Cd).call(this,{dest:null,hash:`page=${l}`,page:l,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1}))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||b(this,wW,Un).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const l=window.history.state;b(this,V0,xW).call(this,l)&&l.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const l=window.history.state;b(this,V0,xW).call(this,l)&&l.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}}RF=new WeakMap,td=new WeakSet,Cd=function(d,l=!1){const U=l||!this._destination,Z={fingerprint:this._fingerprint,uid:U?this._uid:this._uid+1,destination:d};b(this,rW,dn).call(this,d,Z.uid);let F;if(this._updateUrl&&d!=null&&d.hash){const t=document.location.href.split("#",1)[0];t.startsWith("file://")||(F=`${t}#${d.hash}`)}U?window.history.replaceState(Z,"",F):window.history.pushState(Z,"",F)},wW=new WeakSet,Un=function(d=!1){if(!this._position)return;let l=this._position;if(d&&(l=Object.assign(Object.create(null),this._position),l.temporary=!0),!this._destination){b(this,td,Cd).call(this,l);return}if(this._destination.temporary){b(this,td,Cd).call(this,l,!0);return}if(this._destination.hash===l.hash||!this._destination.page&&this._numPositionUpdates<=GX)return;let U=!1;if(this._destination.page>=l.first&&this._destination.page<=l.page){if(this._destination.dest!==void 0||!this._destination.first)return;U=!0}b(this,td,Cd).call(this,l,U)},CW=new WeakSet,bs=function(d){return Number.isInteger(d)&&d>0&&d<=this.linkService.pagesCount},V0=new WeakSet,xW=function(d,l=!1){if(!d)return!1;if(d.fingerprint!==this._fingerprint)if(l){if(typeof d.fingerprint!="string"||d.fingerprint.length!==this._fingerprint.length)return!1;const[U]=performance.getEntriesByType("navigation");if((U==null?void 0:U.type)!=="reload")return!1}else return!1;return!(!Number.isInteger(d.uid)||d.uid<0||d.destination===null||typeof d.destination!="object")},rW=new WeakSet,dn=function(d,l,U=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),U&&d!=null&&d.temporary&&delete d.temporary,this._destination=d,this._uid=l,this._maxUid=Math.max(this._maxUid,l),this._numPositionUpdates=0},ms=new WeakSet,Xh=function(d=!1){const l=unescape(Sh()).substring(1),U=Ds(l),Z=U.get("nameddest")||"";let F=U.get("page")|0;return(!b(this,CW,bs).call(this,F)||d&&Z.length>0)&&(F=null),{hash:l,page:F,rotation:this.linkService.rotation}},Yh=new WeakSet,he=function({location:d}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:d.pdfOpenParams.substring(1),page:this.linkService.page,first:d.pageNumber,rotation:d.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout(()=>{this._popStateInProgress||b(this,wW,Un).call(this,!0),this._updateViewareaTimeout=null},TX))},ph=new WeakSet,be=function({state:d}){const l=Sh(),U=this._currentHash!==l;if(this._currentHash=l,!d){this._uid++;const{hash:F,page:t,rotation:c}=b(this,ms,Xh).call(this);b(this,td,Cd).call(this,{hash:F,page:t,rotation:c},!0);return}if(!b(this,V0,xW).call(this,d))return;this._popStateInProgress=!0,U&&(this._blockHashChange++,pS({target:window,name:"hashchange",delay:JX}).then(()=>{this._blockHashChange--}));const Z=d.destination;b(this,rW,dn).call(this,Z,d.uid,!0),aM(Z.rotation)&&(this.linkService.rotation=Z.rotation),Z.dest?this.linkService.goToDestination(Z.dest):Z.hash?this.linkService.setHash(Z.hash):Z.page&&(this.linkService.page=Z.page),Promise.resolve().then(()=>{this._popStateInProgress=!1})},es=new WeakSet,Bh=function(){(!this._destination||this._destination.temporary)&&b(this,wW,Un).call(this)},uh=new WeakSet,BM=function(){if(V(this,RF))return;m(this,RF,new AbortController);const{signal:d}=V(this,RF);this.eventBus._on("updateviewarea",b(this,Yh,he).bind(this),{signal:d}),window.addEventListener("popstate",b(this,ph,be).bind(this),{signal:d}),window.addEventListener("pagehide",b(this,es,Bh).bind(this),{signal:d})},oh=new WeakSet,uM=function(){var d;(d=V(this,RF))==null||d.abort(),m(this,RF,null)};function XX(d,l){return typeof d!="string"||typeof l!="string"?!1:d===l||Ds(d).get("nameddest")===l}function YX(d,l){function U(Z,F){if(typeof Z!=typeof F||Array.isArray(Z)||Array.isArray(F))return!1;if(Z!==null&&typeof Z=="object"&&F!==null){if(Object.keys(Z).length!==Object.keys(F).length)return!1;for(const t in Z)if(!U(Z[t],F[t]))return!1;return!0}return Z===F||Number.isNaN(Z)&&Number.isNaN(F)}if(!(Array.isArray(d)&&Array.isArray(l))||d.length!==l.length)return!1;for(let Z=0,F=d.length;Z<F;Z++)if(!U(d[Z],l[Z]))return!1;return!0}var Zn,Fn,tn,cn,cW;class pX{constructor(l){i(this,Zn,null),i(this,Fn,null),i(this,tn,null),i(this,cn,null),i(this,cW,void 0),this.pdfPage=l.pdfPage,this.accessibilityManager=l.accessibilityManager,this.l10n=l.l10n,this.l10n||(this.l10n=new Es),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,m(this,cW,l.uiManager),m(this,Zn,l.annotationLayer||null),m(this,cn,l.textLayer||null),m(this,Fn,l.drawLayer||null),m(this,tn,l.onAppend||null)}render(l,U="display"){return D(this,null,function*(){var Z;if(U!=="display"||this._cancelled)return;const F=l.clone({dontFlip:!0});if(this.div){this.annotationEditorLayer.update({viewport:F}),this.show();return}const t=this.div=document.createElement("div");t.className="annotationEditorLayer",t.hidden=!0,t.dir=V(this,cW).direction,(Z=V(this,tn))==null||Z.call(this,t),this.annotationEditorLayer=new hS({uiManager:V(this,cW),div:t,accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:F,annotationLayer:V(this,Zn),textLayer:V(this,cn),drawLayer:V(this,Fn)});const c={viewport:F,div:t,annotations:null,intent:U};this.annotationEditorLayer.render(c),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)}}Zn=new WeakMap,Fn=new WeakMap,tn=new WeakMap,cn=new WeakMap,cW=new WeakMap;{var $W=Object.create(null);const d=navigator.userAgent||"",l=navigator.platform||"",U=navigator.maxTouchPoints||1,Z=/Android/.test(d),F=/\b(iPad|iPhone|iPod)(?=;)/.test(d)||l==="MacIntel"&&U>1;(function(){(F||Z)&&($W.maxCanvasPixels=5242880)})()}const z={BROWSER:1,VIEWER:2,API:4,WORKER:8,PREFERENCE:128},LZ={canvasMaxAreaInBytes:{value:-1,kind:z.BROWSER+z.API},isInAutomation:{value:!1,kind:z.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:z.BROWSER},supportsDocumentFonts:{value:!0,kind:z.BROWSER},supportsIntegratedFind:{value:!1,kind:z.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:z.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:z.BROWSER},supportsPinchToZoom:{value:!0,kind:z.BROWSER},annotationEditorMode:{value:0,kind:z.VIEWER+z.PREFERENCE},annotationMode:{value:2,kind:z.VIEWER+z.PREFERENCE},cursorToolOnLoad:{value:0,kind:z.VIEWER+z.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:z.VIEWER},defaultZoomDelay:{value:400,kind:z.VIEWER+z.PREFERENCE},defaultZoomValue:{value:"",kind:z.VIEWER+z.PREFERENCE},disableHistory:{value:!1,kind:z.VIEWER},disablePageLabels:{value:!1,kind:z.VIEWER+z.PREFERENCE},enableHighlightEditor:{value:!1,kind:z.VIEWER+z.PREFERENCE},enableHighlightFloatingButton:{value:!1,kind:z.VIEWER+z.PREFERENCE},enableML:{value:!1,kind:z.VIEWER+z.PREFERENCE},enablePermissions:{value:!1,kind:z.VIEWER+z.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:z.VIEWER+z.PREFERENCE},enableScripting:{value:!0,kind:z.VIEWER+z.PREFERENCE},enableStampEditor:{value:!0,kind:z.VIEWER+z.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:z.VIEWER},externalLinkTarget:{value:0,kind:z.VIEWER+z.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:z.VIEWER+z.PREFERENCE},historyUpdateUrl:{value:!1,kind:z.VIEWER+z.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:z.VIEWER+z.PREFERENCE},imageResourcesPath:{value:"./images/",kind:z.VIEWER},maxCanvasPixels:{value:jF(2,25),kind:z.VIEWER},forcePageColors:{value:!1,kind:z.VIEWER+z.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:z.VIEWER+z.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:z.VIEWER+z.PREFERENCE},pdfBugEnabled:{value:!1,kind:z.VIEWER+z.PREFERENCE},printResolution:{value:150,kind:z.VIEWER},sidebarViewOnLoad:{value:-1,kind:z.VIEWER+z.PREFERENCE},scrollModeOnLoad:{value:-1,kind:z.VIEWER+z.PREFERENCE},spreadModeOnLoad:{value:-1,kind:z.VIEWER+z.PREFERENCE},textLayerMode:{value:1,kind:z.VIEWER+z.PREFERENCE},viewOnLoad:{value:0,kind:z.VIEWER+z.PREFERENCE},cMapPacked:{value:!0,kind:z.API},cMapUrl:{value:"../web/cmaps/",kind:z.API},disableAutoFetch:{value:!1,kind:z.API+z.PREFERENCE},disableFontFace:{value:!1,kind:z.API+z.PREFERENCE},disableRange:{value:!1,kind:z.API+z.PREFERENCE},disableStream:{value:!1,kind:z.API+z.PREFERENCE},docBaseUrl:{value:"",kind:z.API},enableHWA:{value:!0,kind:z.API+z.VIEWER+z.PREFERENCE},enableXfa:{value:!0,kind:z.API+z.PREFERENCE},fontExtraProperties:{value:!1,kind:z.API},isEvalSupported:{value:!0,kind:z.API},isOffscreenCanvasSupported:{value:!0,kind:z.API},maxImageSize:{value:-1,kind:z.API},pdfBug:{value:!1,kind:z.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:z.API},verbosity:{value:1,kind:z.API},workerPort:{value:null,kind:z.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:z.WORKER}};LZ.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:z.VIEWER},LZ.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:z.VIEWER},LZ.viewerCssTheme={value:0,kind:z.VIEWER+z.PREFERENCE};LZ.disablePreferences={value:!1,kind:z.VIEWER},LZ.locale={value:navigator.language||"en-US",kind:z.VIEWER};const WZ=Object.create(null);for(const d in $W)WZ[d]=$W[d];class BX{constructor(){throw new Error("Cannot initialize AppOptions.")}static get(l){var Z,F;var U;return(F=(Z=WZ[l])!=null?Z:(U=LZ[l])==null?void 0:U.value)!=null?F:void 0}static getAll(l=null,U=!1){var F;const Z=Object.create(null);for(const t in LZ){const c=LZ[t];l&&!(l&c.kind)||(Z[t]=U?c.value:(F=WZ[t])!=null?F:c.value)}return Z}static set(l,U){WZ[l]=U}static setAll(l,U=!1){if(U){if(this.get("disablePreferences"))return;for(const Z in WZ)if($W[Z]===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 Z in l)WZ[Z]=l[Z]}static remove(l){delete WZ[l];const U=$W[l];U!==void 0&&(WZ[l]=U)}}var Yd;class uX{constructor(l){i(this,Yd,null),this.pageIndex=l.pageIndex}render(l="display"){return D(this,null,function*(){l!=="display"||V(this,Yd)||this._cancelled||m(this,Yd,new MS({pageIndex:this.pageIndex}))})}cancel(){this._cancelled=!0,V(this,Yd)&&(V(this,Yd).destroy(),m(this,Yd,null))}setParent(l){var U;(U=V(this,Yd))==null||U.setParent(l)}getDrawLayer(){return V(this,Yd)}}Yd=new WeakMap;const me={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},oX=/^H(\d+)$/;var DU,Wn,VR,Ms,yh;class oM{constructor(){i(this,Wn),i(this,Ms),i(this,DU,void 0)}get renderingDone(){return V(this,DU)!==void 0}render(l){if(V(this,DU)!==void 0)return V(this,DU);const U=b(this,Ms,yh).call(this,l);return U==null||U.classList.add("structTree"),m(this,DU,U)}hide(){V(this,DU)&&!V(this,DU).hidden&&(V(this,DU).hidden=!0)}show(){var l;(l=V(this,DU))!=null&&l.hidden&&(V(this,DU).hidden=!1)}}DU=new WeakMap,Wn=new WeakSet,VR=function(d,l){const{alt:U,id:Z,lang:F}=d;U!==void 0&&l.setAttribute("aria-label",Rs(U)),Z!==void 0&&l.setAttribute("aria-owns",Z),F!==void 0&&l.setAttribute("lang",Rs(F,!0))},Ms=new WeakSet,yh=function(d){if(!d)return null;const l=document.createElement("span");if("role"in d){const{role:U}=d,Z=U.match(oX);Z?(l.setAttribute("role","heading"),l.setAttribute("aria-level",Z[1])):me[U]&&l.setAttribute("role",me[U])}if(b(this,Wn,VR).call(this,d,l),d.children)if(d.children.length===1&&"id"in d.children[0])b(this,Wn,VR).call(this,d.children[0],l);else for(const U of d.children)l.append(b(this,Ms,yh).call(this,U));return l};var VZ,IU,QZ,NF,jW,Vn,Qn,kh;const yM=class an{constructor(){i(this,Qn),i(this,VZ,!1),i(this,IU,null),i(this,QZ,new Map),i(this,NF,new Map)}setTextMapping(l){m(this,IU,l)}enable(){if(V(this,VZ))throw new Error("TextAccessibilityManager is already enabled.");if(!V(this,IU))throw new Error("Text divs and strings have not been set.");if(m(this,VZ,!0),m(this,IU,V(this,IU).slice()),V(this,IU).sort(b(an,jW,Vn)),V(this,QZ).size>0){const l=V(this,IU);for(const[U,Z]of V(this,QZ)){if(!document.getElementById(U)){V(this,QZ).delete(U);continue}b(this,Qn,kh).call(this,U,l[Z])}}for(const[l,U]of V(this,NF))this.addPointerInTextLayer(l,U);V(this,NF).clear()}disable(){V(this,VZ)&&(V(this,NF).clear(),m(this,IU,null),m(this,VZ,!1))}removePointerInTextLayer(l){if(!V(this,VZ)){V(this,NF).delete(l);return}const U=V(this,IU);if(!U||U.length===0)return;const{id:Z}=l,F=V(this,QZ).get(Z);if(F===void 0)return;const t=U[F];V(this,QZ).delete(Z);let c=t.getAttribute("aria-owns");c!=null&&c.includes(Z)&&(c=c.split(" ").filter(W=>W!==Z).join(" "),c?t.setAttribute("aria-owns",c):(t.removeAttribute("aria-owns"),t.setAttribute("role","presentation")))}addPointerInTextLayer(l,U){const{id:Z}=l;if(!Z)return null;if(!V(this,VZ))return V(this,NF).set(l,U),null;U&&this.removePointerInTextLayer(l);const F=V(this,IU);if(!F||F.length===0)return null;const t=_W(F,a=>{var n;return b(n=an,jW,Vn).call(n,l,a)<0}),c=Math.max(0,t-1),W=F[c];b(this,Qn,kh).call(this,Z,W),V(this,QZ).set(Z,c);const Q=W.parentNode;return Q!=null&&Q.classList.contains("markedContent")?Q.id:null}moveElementInDOM(l,U,Z,F){const t=this.addPointerInTextLayer(Z,F);if(!l.hasChildNodes())return l.append(U),t;const c=Array.from(l.childNodes).filter(a=>a!==U);if(c.length===0)return t;const W=Z||U,Q=_W(c,a=>{var n;return b(n=an,jW,Vn).call(n,W,a)<0});return Q===0?c[0].before(U):c[Q-1].after(U),t}};VZ=new WeakMap,IU=new WeakMap,QZ=new WeakMap,NF=new WeakMap,jW=new WeakSet,Vn=function(d,l){const U=d.getBoundingClientRect(),Z=l.getBoundingClientRect();if(U.width===0&&U.height===0)return 1;if(Z.width===0&&Z.height===0)return-1;const F=U.y,t=U.y+U.height,c=U.y+U.height/2,W=Z.y,Q=Z.y+Z.height,a=Z.y+Z.height/2;if(c<=W&&a>=t)return-1;if(a<=F&&c>=Q)return 1;const n=U.x+U.width/2,s=Z.x+Z.width/2;return n-s},Qn=new WeakSet,kh=function(d,l){const U=l.getAttribute("aria-owns");U!=null&&U.includes(d)||l.setAttribute("aria-owns",U?`${U} ${d}`:d),l.removeAttribute("role")},i(yM,jW);let yX=yM;var hF;class kX{constructor({findController:l,eventBus:U,pageIndex:Z}){i(this,hF,null),this.findController=l,this.matches=[],this.eventBus=U,this.pageIdx=Z,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(l,U){this.textDivs=l,this.textContentItemsStr=U}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,V(this,hF)||(m(this,hF,new AbortController),this.eventBus._on("updatetextlayermatches",l=>{(l.pageIndex===this.pageIdx||l.pageIndex===-1)&&this._updateMatches()},{signal:V(this,hF).signal})),this._updateMatches()}disable(){var l;this.enabled&&(this.enabled=!1,(l=V(this,hF))==null||l.abort(),m(this,hF,null),this._updateMatches(!0))}_convertMatches(l,U){if(!l)return[];const{textContentItemsStr:Z}=this;let F=0,t=0;const c=Z.length-1,W=[];for(let Q=0,a=l.length;Q<a;Q++){let n=l[Q];for(;F!==c&&n>=t+Z[F].length;)t+=Z[F].length,F++;F===Z.length&&console.error("Could not find a matching mapping");const s={begin:{divIdx:F,offset:n-t}};for(n+=U[Q];F!==c&&n>t+Z[F].length;)t+=Z[F].length,F++;s.end={divIdx:F,offset:n-t},W.push(s)}return W}_renderMatches(l){if(l.length===0)return;const{findController:U,pageIdx:Z}=this,{textContentItemsStr:F,textDivs:t}=this,c=Z===U.selected.pageIdx,W=U.selected.matchIdx,Q=U.state.highlightAll;let a=null;const n={divIdx:-1,offset:void 0};function s(J,T){const G=J.divIdx;return t[G].textContent="",R(G,0,J.offset,T)}function R(J,T,G,Y){let S=t[J];if(S.nodeType===Node.TEXT_NODE){const k=document.createElement("span");S.before(k),k.append(S),t[J]=k,S=k}const X=F[J].substring(T,G),B=document.createTextNode(X);if(Y){const k=document.createElement("span");return k.className=`${Y} appended`,k.append(B),S.append(k),Y.includes("selected")?k.offsetLeft:0}return S.append(B),0}let N=W,h=N+1;if(Q)N=0,h=l.length;else if(!c)return;let e=-1,M=-1;for(let J=N;J<h;J++){const T=l[J],G=T.begin;if(G.divIdx===e&&G.offset===M)continue;e=G.divIdx,M=G.offset;const Y=T.end,S=c&&J===W,X=S?" selected":"";let B=0;if(!a||G.divIdx!==a.divIdx?(a!==null&&R(a.divIdx,a.offset,n.offset),s(G)):R(a.divIdx,a.offset,G.offset),G.divIdx===Y.divIdx)B=R(G.divIdx,G.offset,Y.offset,"highlight"+X);else{B=R(G.divIdx,G.offset,n.offset,"highlight begin"+X);for(let k=G.divIdx+1,p=Y.divIdx;k<p;k++)t[k].className="highlight middle"+X;s(Y,"highlight end"+X)}a=Y,S&&U.scrollMatchIntoView({element:t[G.divIdx],selectedLeft:B,pageIndex:Z,matchIndex:W})}a&&R(a.divIdx,a.offset,n.offset)}_updateMatches(l=!1){if(!this.enabled&&!l)return;const{findController:U,matches:Z,pageIdx:F}=this,{textContentItemsStr:t,textDivs:c}=this;let W=-1;for(const n of Z){const s=Math.max(W,n.begin.divIdx);for(let R=s,N=n.end.divIdx;R<=N;R++){const h=c[R];h.textContent=t[R],h.className=""}W=n.end.divIdx+1}if(!(U!=null&&U.highlightMatches)||l)return;const Q=U.pageMatches[F]||null,a=U.pageMatchesLength[F]||null;this.matches=this._convertMatches(Q,a),this._renderMatches(this.matches)}}hF=new WeakMap;var Js,nn,Et,pd,LU,AZ,Lh,kM,zh,LM,QR,ee;const bF=class zM{constructor({pdfPage:l,highlighter:U=null,accessibilityManager:Z=null,enablePermissions:F=!1,onAppend:t=null}){i(this,Lh),i(this,Js,!1),i(this,nn,null),i(this,Et,!1),i(this,pd,null),this.pdfPage=l,this.highlighter=U,this.accessibilityManager=Z,m(this,Js,F===!0),m(this,nn,t),this.div=document.createElement("div"),this.div.tabIndex=0,this.div.className="textLayer"}render(l,U=null){return D(this,null,function*(){var Z,F,t,c,W;if(V(this,Et)&&V(this,pd)){V(this,pd).update({viewport:l,onBefore:this.hide.bind(this)}),this.show();return}this.cancel(),m(this,pd,new XS({textContentSource:this.pdfPage.streamTextContent(U||{includeMarkedContent:!0,disableNormalization:!0}),container:this.div,viewport:l}));const{textDivs:Q,textContentItemsStr:a}=V(this,pd);(Z=this.highlighter)==null||Z.setTextMapping(Q,a),(F=this.accessibilityManager)==null||F.setTextMapping(Q),yield V(this,pd).render(),m(this,Et,!0);const n=document.createElement("div");n.className="endOfContent",this.div.append(n),b(this,Lh,kM).call(this,n),(t=V(this,nn))==null||t.call(this,this.div),(c=this.highlighter)==null||c.enable(),(W=this.accessibilityManager)==null||W.enable()})}hide(){var l;!this.div.hidden&&V(this,Et)&&((l=this.highlighter)==null||l.disable(),this.div.hidden=!0)}show(){var l;this.div.hidden&&V(this,Et)&&(this.div.hidden=!1,(l=this.highlighter)==null||l.enable())}cancel(){var l,U,Z,F;(l=V(this,pd))==null||l.cancel(),m(this,pd,null),(U=this.highlighter)==null||U.disable(),(Z=this.accessibilityManager)==null||Z.disable(),b(F=zM,zh,LM).call(F,this.div)}};Js=new WeakMap,nn=new WeakMap,Et=new WeakMap,pd=new WeakMap,LU=new WeakMap,AZ=new WeakMap,Lh=new WeakSet,kM=function(d){var l;const{div:U}=this;U.addEventListener("mousedown",Z=>{d.classList.add("active")}),U.addEventListener("copy",Z=>{if(!V(this,Js)){const F=document.getSelection();Z.clipboardData.setData("text/plain",Rs(TS(F.toString())))}Z.preventDefault(),Z.stopPropagation()}),V(bF,LU).set(U,d),b(l=bF,QR,ee).call(l)},zh=new WeakSet,LM=function(d){var l;V(this,LU).delete(d),V(this,LU).size===0&&((l=V(this,AZ))==null||l.abort(),m(this,AZ,null))},QR=new WeakSet,ee=function(){if(V(this,AZ))return;m(this,AZ,new AbortController);const{signal:d}=V(this,AZ),l=(F,t)=>{t.append(F),F.style.width="",F.style.height="",F.classList.remove("active")};document.addEventListener("pointerup",()=>{V(this,LU).forEach(l)},{signal:d});var U,Z;document.addEventListener("selectionchange",()=>{const F=document.getSelection();if(F.rangeCount===0){V(this,LU).forEach(l);return}const t=new Set;for(let s=0;s<F.rangeCount;s++){const R=F.getRangeAt(s);for(const N of V(this,LU).keys())!t.has(N)&&R.intersectsNode(N)&&t.add(N)}for(const[s,R]of V(this,LU))t.has(s)?R.classList.add("active"):l(R,s);if(U!=null||(U=getComputedStyle(V(this,LU).values().next().value).getPropertyValue("-moz-user-select")==="none"),U)return;const c=F.getRangeAt(0),W=Z&&(c.compareBoundaryPoints(Range.END_TO_END,Z)===0||c.compareBoundaryPoints(Range.START_TO_END,Z)===0);let Q=W?c.startContainer:c.endContainer;Q.nodeType===Node.TEXT_NODE&&(Q=Q.parentNode);const a=Q.parentElement.closest(".textLayer"),n=V(this,LU).get(a);n&&(n.style.width=a.style.width,n.style.height=a.style.height,Q.parentElement.insertBefore(n,W?Q:Q.nextSibling)),Z=c.cloneRange()},{signal:d})},i(bF,zh),i(bF,QR),i(bF,LU,new Map),i(bF,AZ,null);let DM=bF;class IM{constructor({pdfPage:l,annotationStorage:U=null,linkService:Z,xfaHtml:F=null}){this.pdfPage=l,this.annotationStorage=U,this.linkService=Z,this.xfaHtml=F,this.div=null,this._cancelled=!1}render(l,U="display"){return D(this,null,function*(){if(U==="print"){const t={viewport:l.clone({dontFlip:!0}),div:this.div,xfaHtml:this.xfaHtml,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:U};return this.div=document.createElement("div"),t.div=this.div,dR.render(t)}const Z=yield this.pdfPage.getXfa();if(this._cancelled||!Z)return{textDivs:[]};const F={viewport:l.clone({dontFlip:!0}),div:this.div,xfaHtml:Z,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:U};return this.div?dR.update(F):(this.div=document.createElement("div"),F.div=this.div,dR.render(F))})}cancel(){this._cancelled=!0}hide(){this.div&&(this.div.hidden=!0)}}const LX={annotationEditorUIManager:null,annotationStorage:null,downloadManager:null,enableScripting:!1,fieldObjectsPromise:null,findController:null,hasJSActionsPromise:null,get linkService(){return new Nb}},zX=new Map([["canvasWrapper",0],["textLayer",1],["annotationLayer",2],["annotationEditorLayer",3],["xfaLayer",3]]);var wt,sn,Ct,mF,eF,Rn,Q0,WW,VW,sZ,xt,zF,XF,a0,QW,Nn,rt,nc,hn,Dh,bn,Ih,mn,Eh,en,wh,Mn,Ch,xh,Me,rh,Je,Jn,jh;class EM{constructor(l){var c,W,Q;i(this,XF),i(this,QW),i(this,rt),i(this,hn),i(this,bn),i(this,mn),i(this,en),i(this,Mn),i(this,xh),i(this,rh),i(this,Jn),i(this,wt,xd.ENABLE_FORMS),i(this,sn,!1),i(this,Ct,!1),i(this,mF,null),i(this,eF,null),i(this,Rn,null),i(this,Q0,null),i(this,WW,Rl.INITIAL),i(this,VW,cd.ENABLE),i(this,sZ,{directDrawing:!0,initialOptionalContent:!0,regularAnnotations:!0}),i(this,xt,new WeakMap),i(this,zF,[null,null,null,null]);var U;const Z=l.container,F=l.defaultViewport;this.id=l.id,this.renderingId="page"+this.id,m(this,mF,l.layerProperties||LX),this.pdfPage=null,this.pageLabel=null,this.rotation=0,this.scale=l.scale||cM,this.viewport=F,this.pdfPageRotate=F.rotation,this._optionalContentConfigPromise=l.optionalContentConfigPromise||null,m(this,VW,(c=l.textLayerMode)!=null?c:cd.ENABLE),m(this,wt,(W=l.annotationMode)!=null?W:xd.ENABLE_FORMS),this.imageResourcesPath=l.imageResourcesPath||"",this.maxCanvasPixels=(Q=l.maxCanvasPixels)!=null?Q:BX.get("maxCanvasPixels"),this.pageColors=l.pageColors||null,m(this,sn,l.enableHWA||!1),this.eventBus=l.eventBus,this.renderingQueue=l.renderingQueue,this.l10n=l.l10n,this.l10n||(this.l10n=new Es),this.renderTask=null,this.resume=null,this._isStandalone=!((U=this.renderingQueue)!=null&&U.hasViewer()),this._container=Z,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 t=document.createElement("div");if(t.className="page",t.setAttribute("data-page-number",this.id),t.setAttribute("role","region"),t.setAttribute("data-l10n-id","pdfjs-page-landmark"),t.setAttribute("data-l10n-args",JSON.stringify({page:this.id})),this.div=t,b(this,QW,Nn).call(this),Z==null||Z.append(t),this._isStandalone){Z==null||Z.style.setProperty("--scale-factor",this.scale*wd.PDF_TO_CSS_UNITS);const{optionalContentConfigPromise:a}=l;a&&a.then(n=>{a===this._optionalContentConfigPromise&&(V(this,sZ).initialOptionalContent=n.hasInitialVisibility)}),l.l10n||this.l10n.translate(this.div)}}get renderingState(){return V(this,WW)}set renderingState(l){if(l!==V(this,WW))switch(m(this,WW,l),V(this,eF)&&(clearTimeout(V(this,eF)),m(this,eF,null)),l){case Rl.PAUSED:this.div.classList.remove("loading");break;case Rl.RUNNING:this.div.classList.add("loadingIcon"),m(this,eF,setTimeout(()=>{this.div.classList.add("loading"),m(this,eF,null)},0));break;case Rl.INITIAL:case Rl.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(l){var U,Z,F,t;this._isStandalone&&(((U=this.pageColors)==null?void 0:U.foreground)==="CanvasText"||((Z=this.pageColors)==null?void 0:Z.background)==="Canvas")&&((F=this._container)==null||F.style.setProperty("--hcm-highlight-filter",l.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),(t=this._container)==null||t.style.setProperty("--hcm-highlight-selected-filter",l.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=l,this.pdfPageRotate=l.rotate;const c=(this.rotation+this.pdfPageRotate)%360;this.viewport=l.getViewport({scale:this.scale*wd.PDF_TO_CSS_UNITS,rotation:c}),b(this,QW,Nn).call(this),this.reset()}destroy(){var l;this.reset(),(l=this.pdfPage)==null||l.cleanup()}get _textHighlighter(){return Ns(this,"_textHighlighter",new kX({pageIndex:this.id-1,eventBus:this.eventBus,findController:V(this,mF).findController}))}_resetZoomLayer(l=!1){if(!this.zoomLayer)return;const U=this.zoomLayer.firstChild;V(this,xt).delete(U),U.width=0,U.height=0,l&&this.zoomLayer.remove(),this.zoomLayer=null}reset({keepZoomLayer:l=!1,keepAnnotationLayer:U=!1,keepAnnotationEditorLayer:Z=!1,keepXfaLayer:F=!1,keepTextLayer:t=!1}={}){var c,W,Q,a,n;this.cancelRendering({keepAnnotationLayer:U,keepAnnotationEditorLayer:Z,keepXfaLayer:F,keepTextLayer:t}),this.renderingState=Rl.INITIAL;const s=this.div,R=s.childNodes,N=l&&this.zoomLayer||null,h=U&&((c=this.annotationLayer)==null?void 0:c.div)||null,e=Z&&((W=this.annotationEditorLayer)==null?void 0:W.div)||null,M=F&&((Q=this.xfaLayer)==null?void 0:Q.div)||null,J=t&&((a=this.textLayer)==null?void 0:a.div)||null;for(let T=R.length-1;T>=0;T--){const G=R[T];switch(G){case N:case h:case e:case M:case J:continue}G.remove();const Y=V(this,zF).indexOf(G);Y>=0&&(V(this,zF)[Y]=null)}s.removeAttribute("data-loaded"),h&&this.annotationLayer.hide(),e&&this.annotationEditorLayer.hide(),M&&this.xfaLayer.hide(),J&&this.textLayer.hide(),(n=this.structTreeLayer)==null||n.hide(),N||(this.canvas&&(V(this,xt).delete(this.canvas),this.canvas.width=0,this.canvas.height=0,delete this.canvas),this._resetZoomLayer())}update({scale:l=0,rotation:U=null,optionalContentConfigPromise:Z=null,drawingDelay:F=-1}){var t;this.scale=l||this.scale,typeof U=="number"&&(this.rotation=U),Z instanceof Promise&&(this._optionalContentConfigPromise=Z,Z.then(W=>{Z===this._optionalContentConfigPromise&&(V(this,sZ).initialOptionalContent=W.hasInitialVisibility)})),V(this,sZ).directDrawing=!0;const c=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*wd.PDF_TO_CSS_UNITS,rotation:c}),b(this,QW,Nn).call(this),this._isStandalone&&((t=this._container)==null||t.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let W=!1;if(V(this,Ct)){if(this.maxCanvasPixels===0)W=!0;else if(this.maxCanvasPixels>0){const{width:a,height:n}=this.viewport,{sx:s,sy:R}=this.outputScale;W=(Math.floor(a)*s|0)*(Math.floor(n)*R|0)>this.maxCanvasPixels}}const Q=F>=0&&F<1e3;if(Q||W){if(Q&&!W&&this.renderingState!==Rl.FINISHED&&(this.cancelRendering({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:F}),this.renderingState=Rl.FINISHED,V(this,sZ).directDrawing=!1),this.cssTransform({target:this.canvas,redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!Q,hideTextLayer:Q}),Q)return;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:V(this,Q0)});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:l=!1,keepAnnotationEditorLayer:U=!1,keepXfaLayer:Z=!1,keepTextLayer:F=!1,cancelExtraDelay:t=0}={}){var c;this.renderTask&&(this.renderTask.cancel(t),this.renderTask=null),this.resume=null,this.textLayer&&(!F||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationLayer&&(!l||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.annotationEditorLayer&&(!U||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!Z||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,(c=this._textHighlighter)==null||c.disable())}cssTransform({target:l,redrawAnnotationLayer:U=!1,redrawAnnotationEditorLayer:Z=!1,redrawXfaLayer:F=!1,redrawTextLayer:t=!1,hideTextLayer:c=!1}){var W;if(!l.hasAttribute("zooming")){l.setAttribute("zooming",!0);const{style:a}=l;a.width=a.height=""}const Q=V(this,xt).get(l);if(this.viewport!==Q){const a=this.viewport.rotation-Q.rotation,n=Math.abs(a);let s=1,R=1;if(n===90||n===270){const{width:N,height:h}=this.viewport;s=h/N,R=N/h}l.style.transform=`rotate(${a}deg) scale(${s}, ${R})`}U&&this.annotationLayer&&b(this,hn,Dh).call(this),Z&&this.annotationEditorLayer&&(this.drawLayer&&b(this,mn,Eh).call(this),b(this,bn,Ih).call(this)),F&&this.xfaLayer&&b(this,en,wh).call(this),this.textLayer&&(c?(this.textLayer.hide(),(W=this.structTreeLayer)==null||W.hide()):t&&b(this,Mn,Ch).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(l,U){return this.viewport.convertToPdfPoint(l,U)}draw(){return D(this,null,function*(){this.renderingState!==Rl.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:l,l10n:U,pageColors:Z,pdfPage:F,viewport:t}=this;if(!F)throw this.renderingState=Rl.FINISHED,new Error("pdfPage is not loaded");this.renderingState=Rl.RUNNING;const c=document.createElement("div");if(c.classList.add("canvasWrapper"),b(this,XF,a0).call(this,c,"canvasWrapper"),!this.textLayer&&V(this,VW)!==cd.DISABLE&&!F.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new yX),this.textLayer=new DM({pdfPage:F,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:V(this,VW)===cd.ENABLE_PERMISSIONS,onAppend:X=>{this.l10n.pause(),b(this,XF,a0).call(this,X,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&V(this,wt)!==xd.DISABLE){const{annotationStorage:X,annotationEditorUIManager:B,downloadManager:k,enableScripting:p,fieldObjectsPromise:o,hasJSActionsPromise:y,linkService:I}=V(this,mF);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new mM({pdfPage:F,annotationStorage:X,imageResourcesPath:this.imageResourcesPath,renderForms:V(this,wt)===xd.ENABLE_FORMS,linkService:I,downloadManager:k,enableScripting:p,hasJSActionsPromise:y,fieldObjectsPromise:o,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:B,onAppend:E=>{b(this,XF,a0).call(this,E,"annotationLayer")}})}const W=X=>{if(R==null||R(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this)){this.renderingState=Rl.PAUSED,this.resume=()=>{this.renderingState=Rl.RUNNING,X()};return}X()},{width:Q,height:a}=t,n=document.createElement("canvas");n.setAttribute("role","presentation"),n.hidden=!0;const s=!!(Z!=null&&Z.background&&Z!=null&&Z.foreground);let R=X=>{(!s||X)&&(n.hidden=!1,R=null)};c.append(n),this.canvas=n;const N=n.getContext("2d",{alpha:!1,willReadFrequently:!V(this,sn)}),h=this.outputScale=new IT;if(this.maxCanvasPixels===0){const X=1/this.scale;h.sx*=X,h.sy*=X,m(this,Ct,!0)}else if(this.maxCanvasPixels>0){const X=Q*a,B=Math.sqrt(this.maxCanvasPixels/X);h.sx>B||h.sy>B?(h.sx=B,h.sy=B,m(this,Ct,!0)):m(this,Ct,!1)}const e=Cm(h.sx),M=Cm(h.sy);n.width=JQ(Q*h.sx,e[0]),n.height=JQ(a*h.sy,M[0]);const{style:J}=n;J.width=JQ(Q,e[1])+"px",J.height=JQ(a,M[1])+"px",V(this,xt).set(n,t);const T=h.scaled?[h.sx,0,0,h.sy,0,0]:null,G={canvasContext:N,transform:T,viewport:t,annotationMode:V(this,wt),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:Z},Y=this.renderTask=F.render(G);Y.onContinue=W;const S=Y.promise.then(()=>D(this,null,function*(){var X;R==null||R(!0),yield b(this,Jn,jh).call(this,Y),b(this,Mn,Ch).call(this),this.annotationLayer&&(yield b(this,hn,Dh).call(this));const{annotationEditorUIManager:B}=V(this,mF);B&&(this.drawLayer||(this.drawLayer=new uX({pageIndex:this.id})),yield b(this,mn,Eh).call(this),this.drawLayer.setParent(c),this.annotationEditorLayer||(this.annotationEditorLayer=new pX({uiManager:B,pdfPage:F,l10n:U,accessibilityManager:this._accessibilityManager,annotationLayer:(X=this.annotationLayer)==null?void 0:X.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:k=>{b(this,XF,a0).call(this,k,"annotationEditorLayer")}})),b(this,bn,Ih).call(this))}),X=>(X instanceof hb||R==null||R(!0),b(this,Jn,jh).call(this,Y,X)));if(F.isPureXfa){if(!this.xfaLayer){const{annotationStorage:X,linkService:B}=V(this,mF);this.xfaLayer=new IM({pdfPage:F,annotationStorage:X,linkService:B})}b(this,en,wh).call(this)}return l.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),S})}setPageLabel(l){var U;this.pageLabel=typeof l=="string"?l:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:(U=this.pageLabel)!=null?U:this.id})),this.pageLabel!==null?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:l,initialOptionalContent:U,regularAnnotations:Z}=V(this,sZ);return l&&U&&Z?this.canvas:null}}wt=new WeakMap,sn=new WeakMap,Ct=new WeakMap,mF=new WeakMap,eF=new WeakMap,Rn=new WeakMap,Q0=new WeakMap,WW=new WeakMap,VW=new WeakMap,sZ=new WeakMap,xt=new WeakMap,zF=new WeakMap,XF=new WeakSet,a0=function(d,l){const U=zX.get(l),Z=V(this,zF)[U];if(V(this,zF)[U]=d,Z){Z.replaceWith(d);return}for(let F=U-1;F>=0;F--){const t=V(this,zF)[F];if(t){t.after(d);return}}this.div.prepend(d)},QW=new WeakSet,Nn=function(){const{viewport:d}=this;if(this.pdfPage){if(V(this,Rn)===d.rotation)return;m(this,Rn,d.rotation)}SS(this.div,d,!0,!1)},rt=new WeakSet,nc=function(d,l){this.eventBus.dispatch(d,{source:this,pageNumber:this.id,error:l})},hn=new WeakSet,Dh=function(){return D(this,null,function*(){let d=null;try{yield this.annotationLayer.render(this.viewport,"display")}catch(l){console.error(`#renderAnnotationLayer: "${l}".`),d=l}finally{b(this,rt,nc).call(this,"annotationlayerrendered",d)}})},bn=new WeakSet,Ih=function(){return D(this,null,function*(){let d=null;try{yield this.annotationEditorLayer.render(this.viewport,"display")}catch(l){console.error(`#renderAnnotationEditorLayer: "${l}".`),d=l}finally{b(this,rt,nc).call(this,"annotationeditorlayerrendered",d)}})},mn=new WeakSet,Eh=function(){return D(this,null,function*(){try{yield this.drawLayer.render("display")}catch(d){console.error(`#renderDrawLayer: "${d}".`)}})},en=new WeakSet,wh=function(){return D(this,null,function*(){var d;let l=null;try{const U=yield this.xfaLayer.render(this.viewport,"display");U!=null&&U.textDivs&&this._textHighlighter&&b(this,rh,Je).call(this,U.textDivs)}catch(U){console.error(`#renderXfaLayer: "${U}".`),l=U}finally{(d=this.xfaLayer)!=null&&d.div&&(this.l10n.pause(),b(this,XF,a0).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),b(this,rt,nc).call(this,"xfalayerrendered",l)}})},Mn=new WeakSet,Ch=function(){return D(this,null,function*(){if(!this.textLayer)return;let d=null;try{yield this.textLayer.render(this.viewport)}catch(l){if(l instanceof NS)return;console.error(`#renderTextLayer: "${l}".`),d=l}b(this,rt,nc).call(this,"textlayerrendered",d),b(this,xh,Me).call(this)})},xh=new WeakSet,Me=function(){return D(this,null,function*(){var d,l,U;if(!this.textLayer)return;this.structTreeLayer||(this.structTreeLayer=new oM);const Z=yield this.structTreeLayer.renderingDone?null:this.pdfPage.getStructTree(),F=(d=this.structTreeLayer)==null?void 0:d.render(Z);F&&(this.l10n.pause(),(l=this.canvas)==null||l.append(F),this.l10n.resume()),(U=this.structTreeLayer)==null||U.show()})},rh=new WeakSet,Je=function(d){return D(this,null,function*(){const l=yield this.pdfPage.getTextContent(),U=[];for(const Z of l.items)U.push(Z.str);this._textHighlighter.setTextMapping(d,U),this._textHighlighter.enable()})},Jn=new WeakSet,jh=function(d,l=null){return D(this,null,function*(){if(d===this.renderTask&&(this.renderTask=null),l instanceof hb){m(this,Q0,null);return}if(m(this,Q0,l),this.renderingState=Rl.FINISHED,this._resetZoomLayer(!0),V(this,sZ).regularAnnotations=!d.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:V(this,Q0)}),l)throw l})};function DX(d){return D(this,null,function*(){const l="",U=l.split("#",1)[0];let{info:Z,metadata:F,contentDispositionFilename:t,contentLength:c}=yield d.getMetadata();if(!c){const{length:W}=yield d.getDownloadInfo();c=W}return jU(Nl({},Z),{baseURL:U,filesize:c,filename:t||JS(l),metadata:F==null?void 0:F.getRaw(),authors:F==null?void 0:F.get("dc:creator"),numPages:d.numPages,URL:l})})}class IX{constructor(l){this._ready=new Promise((U,Z)=>{import(l).then(F=>{U(F.QuickJSSandbox())}).catch(Z)})}createSandbox(l){return D(this,null,function*(){(yield this._ready).create(l)})}dispatchEventInSandbox(l){return D(this,null,function*(){const U=yield this._ready;setTimeout(()=>U.dispatchEvent(l),0)})}destroySandbox(){return D(this,null,function*(){(yield this._ready).nukeSandbox()})}}var ud,n0,Gn,G0,T0,Gs,nU,uZ,OW,kl,xU,Oh,wM,aW,Tn,Sn,gh,Kh,CM,jt,nW;class EX{constructor({eventBus:l,externalServices:U=null,docProperties:Z=null}){i(this,Oh),i(this,aW),i(this,Sn),i(this,Kh),i(this,jt),i(this,ud,null),i(this,n0,null),i(this,Gn,null),i(this,G0,null),i(this,T0,null),i(this,Gs,null),i(this,nU,null),i(this,uZ,null),i(this,OW,!1),i(this,kl,null),i(this,xU,null),m(this,T0,l),m(this,Gs,U),m(this,Gn,Z)}setViewer(l){m(this,uZ,l)}setDocument(l){return D(this,null,function*(){var U;if(V(this,nU)&&(yield b(this,jt,nW).call(this)),m(this,nU,l),!l)return;const[Z,F,t]=yield Promise.all([l.getFieldObjects(),l.getCalculationOrderIds(),l.getJSActions()]);if(!Z&&!t){yield b(this,jt,nW).call(this);return}if(l!==V(this,nU))return;try{m(this,kl,b(this,Kh,CM).call(this))}catch(Q){console.error(`setDocument: "${Q.message}".`),yield b(this,jt,nW).call(this);return}const c=V(this,T0);m(this,G0,new AbortController);const{signal:W}=V(this,G0);c._on("updatefromsandbox",Q=>{(Q==null?void 0:Q.source)===window&&b(this,Oh,wM).call(this,Q.detail)},{signal:W}),c._on("dispatcheventinsandbox",Q=>{var a;(a=V(this,kl))==null||a.dispatchEventInSandbox(Q.detail)},{signal:W}),c._on("pagechanging",({pageNumber:Q,previous:a})=>{Q!==a&&(b(this,Sn,gh).call(this,a),b(this,aW,Tn).call(this,Q))},{signal:W}),c._on("pagerendered",({pageNumber:Q})=>{this._pageOpenPending.has(Q)&&Q===V(this,uZ).currentPageNumber&&b(this,aW,Tn).call(this,Q)},{signal:W}),c._on("pagesdestroy",()=>D(this,null,function*(){var Q,a;yield b(this,Sn,gh).call(this,V(this,uZ).currentPageNumber),yield(Q=V(this,kl))==null?void 0:Q.dispatchEventInSandbox({id:"doc",name:"WillClose"}),(a=V(this,ud))==null||a.resolve()}),{signal:W});try{const Q=yield V(this,Gn).call(this,l);if(l!==V(this,nU))return;yield V(this,kl).createSandbox({objects:Z,calculationOrder:F,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:jU(Nl({},Q),{actions:t})}),c.dispatch("sandboxcreated",{source:this})}catch(Q){console.error(`setDocument: "${Q.message}".`),yield b(this,jt,nW).call(this);return}yield(U=V(this,kl))==null?void 0:U.dispatchEventInSandbox({id:"doc",name:"Open"}),yield b(this,aW,Tn).call(this,V(this,uZ).currentPageNumber,!0),Promise.resolve().then(()=>{l===V(this,nU)&&m(this,OW,!0)})})}dispatchWillSave(){return D(this,null,function*(){var l;return(l=V(this,kl))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"WillSave"})})}dispatchDidSave(){return D(this,null,function*(){var l;return(l=V(this,kl))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"DidSave"})})}dispatchWillPrint(){return D(this,null,function*(){var l;if(V(this,kl)){yield(l=V(this,xU))==null?void 0:l.promise,m(this,xU,Promise.withResolvers());try{yield V(this,kl).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(U){throw V(this,xU).resolve(),m(this,xU,null),U}yield V(this,xU).promise}})}dispatchDidPrint(){return D(this,null,function*(){var l;return(l=V(this,kl))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"DidPrint"})})}get destroyPromise(){var l;return((l=V(this,n0))==null?void 0:l.promise)||null}get ready(){return V(this,OW)}get _pageOpenPending(){return Ns(this,"_pageOpenPending",new Set)}get _visitedPages(){return Ns(this,"_visitedPages",new Map)}}ud=new WeakMap,n0=new WeakMap,Gn=new WeakMap,G0=new WeakMap,T0=new WeakMap,Gs=new WeakMap,nU=new WeakMap,uZ=new WeakMap,OW=new WeakMap,kl=new WeakMap,xU=new WeakMap,Oh=new WeakSet,wM=function(d){return D(this,null,function*(){var l,U;const Z=V(this,uZ),F=Z.isInPresentationMode||Z.isChangingPresentationMode,{id:t,siblings:c,command:W,value:Q}=d;if(!t){switch(W){case"clear":console.clear();break;case"error":console.error(Q);break;case"layout":if(!F){const n=KT(Q);Z.spreadMode=n.spreadMode}break;case"page-num":Z.currentPageNumber=Q+1;break;case"print":yield Z.pagesPromise,V(this,T0).dispatch("print",{source:this});break;case"println":console.log(Q);break;case"zoom":F||(Z.currentScaleValue=Q);break;case"SaveAs":V(this,T0).dispatch("download",{source:this});break;case"FirstPage":Z.currentPageNumber=1;break;case"LastPage":Z.currentPageNumber=Z.pagesCount;break;case"NextPage":Z.nextPage();break;case"PrevPage":Z.previousPage();break;case"ZoomViewIn":F||Z.increaseScale();break;case"ZoomViewOut":F||Z.decreaseScale();break;case"WillPrintFinished":(l=V(this,xU))==null||l.resolve(),m(this,xU,null);break}return}if(F&&d.focus)return;delete d.id,delete d.siblings;const a=c?[t,...c]:[t];for(const n of a){const s=document.querySelector(`[data-element-id="${n}"]`);s?s.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:d})):(U=V(this,nU))==null||U.annotationStorage.setValue(n,d)}})},aW=new WeakSet,Tn=function(d,l=!1){return D(this,null,function*(){const U=V(this,nU),Z=this._visitedPages;if(l&&m(this,ud,Promise.withResolvers()),!V(this,ud))return;const F=V(this,uZ).getPageView(d-1);if((F==null?void 0:F.renderingState)!==Rl.FINISHED){this._pageOpenPending.add(d);return}this._pageOpenPending.delete(d);const t=D(this,null,function*(){var c,W;const Q=yield Z.has(d)?null:(c=F.pdfPage)==null?void 0:c.getJSActions();U===V(this,nU)&&(yield(W=V(this,kl))==null?void 0:W.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:d,actions:Q}))});Z.set(d,t)})},Sn=new WeakSet,gh=function(d){return D(this,null,function*(){var l;const U=V(this,nU),Z=this._visitedPages;if(!V(this,ud)||this._pageOpenPending.has(d))return;const F=Z.get(d);F&&(Z.set(d,null),yield F,U===V(this,nU)&&(yield(l=V(this,kl))==null?void 0:l.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:d})))})},Kh=new WeakSet,CM=function(){if(m(this,n0,Promise.withResolvers()),V(this,kl))throw new Error("#initScripting: Scripting already exists.");return V(this,Gs).createScripting()},jt=new WeakSet,nW=function(){return D(this,null,function*(){var d,l,U,Z;if(!V(this,kl)){m(this,nU,null),(d=V(this,n0))==null||d.resolve();return}V(this,ud)&&(yield Promise.race([V(this,ud).promise,new Promise(F=>{setTimeout(F,1e3)})]).catch(()=>{}),m(this,ud,null)),m(this,nU,null);try{yield V(this,kl).destroySandbox()}catch(F){}(l=V(this,xU))==null||l.reject(new Error("Scripting destroyed.")),m(this,xU,null),(U=V(this,G0))==null||U.abort(),m(this,G0,null),this._pageOpenPending.clear(),this._visitedPages.clear(),m(this,kl,null),m(this,OW,!1),(Z=V(this,n0))==null||Z.resolve()})};class wX extends EX{constructor(l){l.externalServices||window.addEventListener("updatefromsandbox",U=>{l.eventBus.dispatch("updatefromsandbox",{source:window,detail:U.detail})}),l.externalServices||(l.externalServices={createScripting:()=>new IX(l.sandboxBundleSrc)}),l.docProperties||(l.docProperties=U=>DX(U)),super(l)}}const CX=3e4;class xX{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(l){this.pdfViewer=l}setThumbnailViewer(l){this.pdfThumbnailViewer=l}isHighestPriority(l){return this.highestPriorityPage===l.renderingId}renderHighestPriority(l){var U;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(l)&&(this.isThumbnailViewEnabled&&(U=this.pdfThumbnailViewer)!=null&&U.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),CX)))}getHighestPriority(l,U,Z,F=!1){const t=l.views,c=t.length;if(c===0)return null;for(let s=0;s<c;s++){const R=t[s].view;if(!this.isViewFinished(R))return R}const W=l.first.id,Q=l.last.id;if(Q-W+1>c){const s=l.ids;for(let R=1,N=Q-W;R<N;R++){const h=Z?W+R:Q-R;if(s.has(h))continue;const e=U[h-1];if(!this.isViewFinished(e))return e}}let a=Z?Q:W-2,n=U[a];return n&&!this.isViewFinished(n)||F&&(a+=Z?1:-1,n=U[a],n&&!this.isViewFinished(n))?n:null}isViewFinished(l){return l.renderingState===Rl.FINISHED}renderView(l){switch(l.renderingState){case Rl.FINISHED:return!1;case Rl.PAUSED:this.highestPriorityPage=l.renderingId,l.resume();break;case Rl.RUNNING:this.highestPriorityPage=l.renderingId;break;case Rl.INITIAL:this.highestPriorityPage=l.renderingId,l.draw().finally(()=>{this.renderHighestPriority()}).catch(U=>{U instanceof hb||console.error(`renderView: "${U}"`)});break}return!0}}const Ge=10,BQ={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function Te(d){return Object.values(BZ).includes(d)&&d!==BZ.DISABLE}var oZ,Ot,Xn,vh;class rX{constructor(l){i(this,Xn),i(this,oZ,new Set),i(this,Ot,0),m(this,Ot,l)}push(l){const U=V(this,oZ);U.has(l)&&U.delete(l),U.add(l),U.size>V(this,Ot)&&b(this,Xn,vh).call(this)}resize(l,U=null){m(this,Ot,l);const Z=V(this,oZ);if(U){const F=Z.size;let t=1;for(const c of Z)if(U.has(c.id)&&(Z.delete(c),Z.add(c)),++t>F)break}for(;Z.size>V(this,Ot);)b(this,Xn,vh).call(this)}has(l){return V(this,oZ).has(l)}[Symbol.iterator](){return V(this,oZ).keys()}}oZ=new WeakMap,Ot=new WeakMap,Xn=new WeakSet,vh=function(){const d=V(this,oZ).keys().next().value;d==null||d.destroy(),V(this,oZ).delete(d)};var MF,Yn,pn,iZ,UU,S0,gW,Bn,un,on,gt,yn,sW,YF,KW,kn,iW,X0,DF,vW,Hh,xM,Ph,rM,fh,jM,s0,HW,PW,Ts,Ah,Se,Ln,aR,_h,Xe,od,RZ,zn,qh,$h,OM,lb,gM,Ss,Ub,db,KM;class vM{constructor(l){var c,W,Q;i(this,Hh),i(this,Ph),i(this,fh),i(this,s0),i(this,PW),i(this,Ah),i(this,Ln),i(this,_h),i(this,od),i(this,zn),i(this,$h),i(this,lb),i(this,Ss),i(this,db),i(this,MF,null),i(this,Yn,null),i(this,pn,null),i(this,iZ,BZ.NONE),i(this,UU,null),i(this,S0,xd.ENABLE_FORMS),i(this,gW,null),i(this,Bn,!1),i(this,un,!1),i(this,on,!1),i(this,gt,null),i(this,yn,null),i(this,sW,!1),i(this,YF,null),i(this,KW,!1),i(this,kn,0),i(this,iW,new ResizeObserver(b(this,db,KM).bind(this))),i(this,X0,null),i(this,DF,null),i(this,vW,cd.ENABLE);var U,Z;const F="4.4.168";if(_m!==F)throw new Error(`The API version "${_m}" does not match the Viewer version "${F}".`);if(this.container=l.container,this.viewer=l.viewer||l.container.firstElementChild,((U=this.container)==null?void 0:U.tagName)!=="DIV"||((Z=this.viewer)==null?void 0:Z.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.");V(this,iW).observe(this.container),this.eventBus=l.eventBus,this.linkService=l.linkService||new Nb,this.downloadManager=l.downloadManager||null,this.findController=l.findController||null,m(this,Yn,l.altTextManager||null),this.findController&&(this.findController.onIsPageVisible=a=>this._getVisiblePages().ids.has(a)),this._scriptingManager=l.scriptingManager||null,m(this,vW,(c=l.textLayerMode)!=null?c:cd.ENABLE),m(this,S0,(W=l.annotationMode)!=null?W:xd.ENABLE_FORMS),m(this,iZ,(Q=l.annotationEditorMode)!=null?Q:BZ.NONE),m(this,pn,l.annotationEditorHighlightColors||null),m(this,un,l.enableHighlightFloatingButton===!0),this.imageResourcesPath=l.imageResourcesPath||"",this.enablePrintAutoRotate=l.enablePrintAutoRotate||!1,this.removePageBorders=l.removePageBorders||!1,this.maxCanvasPixels=l.maxCanvasPixels,this.l10n=l.l10n,this.l10n||(this.l10n=new Es),m(this,on,l.enablePermissions||!1),this.pageColors=l.pageColors||null,m(this,yn,l.mlManager||null),m(this,Bn,l.enableHWA||!1),this.defaultRenderingQueue=!l.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new xX,this.renderingQueue.setViewer(this)):this.renderingQueue=l.renderingQueue;const{abortSignal:t}=l;t==null||t.addEventListener("abort",()=>{V(this,iW).disconnect(),m(this,iW,null)},{once:!0}),this.scroll=ET(this.container,this._scrollUpdate.bind(this),t),this.presentationModeState=J0.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),b(this,Ss,Ub).call(this),this.eventBus._on("thumbnailrendered",({pageNumber:a,pdfPage:n})=>{const s=this._pages[a-1];V(this,MF).has(s)||n==null||n.cleanup()}),l.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(l){return this._pages[l]}getCachedPageViews(){return new Set(V(this,MF))}get pageViewsReady(){return this._pages.every(l=>l==null?void 0:l.pdfPage)}get renderForms(){return V(this,S0)===xd.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(l){if(!Number.isInteger(l))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(l,!0)||console.error(`currentPageNumber: "${l}" is not a valid page.`))}_setCurrentPageNumber(l,U=!1){var t;var Z;if(this._currentPageNumber===l)return U&&b(this,zn,qh).call(this),!0;if(!(0<l&&l<=this.pagesCount))return!1;const F=this._currentPageNumber;return this._currentPageNumber=l,this.eventBus.dispatch("pagechanging",{source:this,pageNumber:l,pageLabel:(t=(Z=this._pageLabels)==null?void 0:Z[l-1])!=null?t:null,previous:F}),U&&b(this,zn,qh).call(this),!0}get currentPageLabel(){var U;var l;return(U=(l=this._pageLabels)==null?void 0:l[this._currentPageNumber-1])!=null?U:null}set currentPageLabel(l){if(!this.pdfDocument)return;let U=l|0;if(this._pageLabels){const Z=this._pageLabels.indexOf(l);Z>=0&&(U=Z+1)}this._setCurrentPageNumber(U,!0)||console.error(`currentPageLabel: "${l}" is not a valid page.`)}get currentScale(){return this._currentScale!==gi?this._currentScale:cM}set currentScale(l){if(isNaN(l))throw new Error("Invalid numeric scale.");this.pdfDocument&&b(this,od,RZ).call(this,l,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(l){this.pdfDocument&&b(this,od,RZ).call(this,l,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(l){if(!aM(l))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(l%=360,l<0&&(l+=360),this._pagesRotation===l))return;this._pagesRotation=l;const U=this._currentPageNumber;this.refresh(!0,{rotation:l}),this._currentScaleValue&&b(this,od,RZ).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:l,pageNumber:U}),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 l=this;return Ns(this,"_layerProperties",{get annotationEditorUIManager(){return V(l,UU)},get annotationStorage(){var U;return(U=l.pdfDocument)==null?void 0:U.annotationStorage},get downloadManager(){return l.downloadManager},get enableScripting(){return!!l._scriptingManager},get fieldObjectsPromise(){var U;return(U=l.pdfDocument)==null?void 0:U.getFieldObjects()},get findController(){return l.findController},get hasJSActionsPromise(){var U;return(U=l.pdfDocument)==null?void 0:U.hasJSActions()},get linkService(){return l.linkService}})}getAllText(){return D(this,null,function*(){const l=[],U=[];for(let Z=1,F=this.pdfDocument.numPages;Z<=F;++Z){if(V(this,KW))return null;U.length=0;const t=yield this.pdfDocument.getPage(Z),{items:c}=yield t.getTextContent();for(const W of c)W.str&&U.push(W.str),W.hasEOL&&U.push(`
|
||
`);l.push(Rs(U.join("")))}return l.join(`
|
||
`)})}setDocument(l){var U,Z;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),(U=this.findController)==null||U.setDocument(null),(Z=this._scriptingManager)==null||Z.setDocument(null),V(this,UU)&&(V(this,UU).destroy(),m(this,UU,null))),this.pdfDocument=l,!l)return;const F=l.numPages,t=l.getPage(1),c=l.getOptionalContentConfig({intent:"display"}),W=V(this,on)?l.getPermissions():Promise.resolve(),{eventBus:Q,pageColors:a,viewer:n}=this;m(this,gt,new AbortController);const{signal:s}=V(this,gt);if(F>BQ.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const h=this._scrollMode=$.PAGE;Q.dispatch("scrollmodechanged",{source:this,mode:h})}this._pagesCapability.promise.then(()=>{Q.dispatch("pagesloaded",{source:this,pagesCount:F})},()=>{});const R=h=>{const e=this._pages[h.pageNumber-1];e&&V(this,MF).push(e)};Q._on("pagerender",R,{signal:s});const N=h=>{h.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:h.timestamp}),Q._off("pagerendered",N))};Q._on("pagerendered",N,{signal:s}),Promise.all([t,W]).then(([h,e])=>{var M;if(l!==this.pdfDocument)return;this._firstPageCapability.resolve(h),this._optionalContentConfigPromise=c;const{annotationEditorMode:J,annotationMode:T,textLayerMode:G}=b(this,Hh,xM).call(this,e);if(G!==cd.DISABLE){const B=m(this,YF,document.createElement("div"));B.id="hiddenCopyElement",n.before(B)}if(J!==BZ.DISABLE){const B=J;l.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):Te(B)?(m(this,UU,new bS(this.container,n,V(this,Yn),Q,l,a,V(this,pn),V(this,un),V(this,yn))),Q.dispatch("annotationeditoruimanager",{source:this,uiManager:V(this,UU)}),B!==BZ.NONE&&V(this,UU).updateMode(B)):console.error(`Invalid AnnotationEditor mode: ${B}`)}const Y=this._scrollMode===$.PAGE?null:n,S=this.currentScale,X=h.getViewport({scale:S*wd.PDF_TO_CSS_UNITS});n.style.setProperty("--scale-factor",X.scale),((a==null?void 0:a.foreground)==="CanvasText"||(a==null?void 0:a.background)==="Canvas")&&(n.style.setProperty("--hcm-highlight-filter",l.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),n.style.setProperty("--hcm-highlight-selected-filter",l.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let B=1;B<=F;++B){const k=new EM({container:Y,eventBus:Q,id:B,scale:S,defaultViewport:X.clone(),optionalContentConfigPromise:c,renderingQueue:this.renderingQueue,textLayerMode:G,annotationMode:T,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:a,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:V(this,Bn)});this._pages.push(k)}(M=this._pages[0])==null||M.setPdfPage(h),this._scrollMode===$.PAGE?b(this,s0,HW).call(this):this._spreadMode!==Al.NONE&&this._updateSpreadMode(),b(this,Ph,rM).call(this,s).then(()=>D(this,null,function*(){var B,k;if(l!==this.pdfDocument)return;if((B=this.findController)==null||B.setDocument(l),(k=this._scriptingManager)==null||k.setDocument(l),V(this,YF)&&document.addEventListener("copy",b(this,fh,jM).bind(this,G),{signal:s}),V(this,UU)&&Q.dispatch("annotationeditormodechanged",{source:this,mode:V(this,iZ)}),l.loadingParams.disableAutoFetch||F>BQ.FORCE_LAZY_PAGE_INIT){this._pagesCapability.resolve();return}let p=F-1;if(p<=0){this._pagesCapability.resolve();return}for(let o=2;o<=F;++o){const y=l.getPage(o).then(I=>{const E=this._pages[o-1];E.pdfPage||E.setPdfPage(I),--p===0&&this._pagesCapability.resolve()},I=>{console.error(`Unable to get page ${o} to initialize viewer`,I),--p===0&&this._pagesCapability.resolve()});o%BQ.PAUSE_EAGER_PAGE_INIT===0&&(yield y)}})),Q.dispatch("pagesinit",{source:this}),l.getMetadata().then(({info:B})=>{l===this.pdfDocument&&B.Language&&(n.lang=B.Language)}),this.defaultRenderingQueue&&this.update()}).catch(h=>{console.error("Unable to initialize viewer",h),this._pagesCapability.reject(h)})}setPageLabels(l){var Z;var U;if(this.pdfDocument){l?Array.isArray(l)&&this.pdfDocument.numPages===l.length?this._pageLabels=l:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let F=0,t=this._pages.length;F<t;F++)this._pages[F].setPageLabel((Z=(U=this._pageLabels)==null?void 0:U[F])!=null?Z:null)}}_resetView(){var l,U;this._pages=[],this._currentPageNumber=1,this._currentScale=gi,this._currentScaleValue=null,this._pageLabels=null,m(this,MF,new rX(Ge)),this._location=null,this._pagesRotation=0,this._optionalContentConfigPromise=null,this._firstPageCapability=Promise.withResolvers(),this._onePageRenderedCapability=Promise.withResolvers(),this._pagesCapability=Promise.withResolvers(),this._scrollMode=$.VERTICAL,this._previousScrollMode=$.UNKNOWN,this._spreadMode=Al.NONE,m(this,X0,{previousPageNumber:1,scrollDown:!0,pages:[]}),(l=V(this,gt))==null||l.abort(),m(this,gt,null),this.viewer.textContent="",this._updateScrollMode(),this.viewer.removeAttribute("lang"),(U=V(this,YF))==null||U.remove(),m(this,YF,null)}_scrollUpdate(){this.pagesCount!==0&&this.update()}pageLabelToPageNumber(l){if(!this._pageLabels)return null;const U=this._pageLabels.indexOf(l);return U<0?null:U+1}scrollPageIntoView({pageNumber:l,destArray:U=null,allowNegativeOffset:Z=!1,ignoreDestinationZoom:F=!1}){if(!this.pdfDocument)return;const t=Number.isInteger(l)&&this._pages[l-1];if(!t){console.error(`scrollPageIntoView: "${l}" is not a valid pageNumber parameter.`);return}if(this.isInPresentationMode||!U){this._setCurrentPageNumber(l,!0);return}let c=0,W=0,Q=0,a=0,n,s;const R=t.rotation%180!==0,N=(R?t.height:t.width)/t.scale/wd.PDF_TO_CSS_UNITS,h=(R?t.width:t.height)/t.scale/wd.PDF_TO_CSS_UNITS;let e=0;switch(U[1].name){case"XYZ":c=U[2],W=U[3],e=U[4],c=c!==null?c:0,W=W!==null?W:h;break;case"Fit":case"FitB":e="page-fit";break;case"FitH":case"FitBH":W=U[2],e="page-width",W===null&&this._location?(c=this._location.left,W=this._location.top):(typeof W!="number"||W<0)&&(W=h);break;case"FitV":case"FitBV":c=U[2],Q=N,a=h,e="page-height";break;case"FitR":c=U[2],W=U[3],Q=U[4]-c,a=U[5]-W;let G=WM,Y=VM;this.removePageBorders&&(G=Y=0),n=(this.container.clientWidth-G)/Q/wd.PDF_TO_CSS_UNITS,s=(this.container.clientHeight-Y)/a/wd.PDF_TO_CSS_UNITS,e=Math.min(Math.abs(n),Math.abs(s));break;default:console.error(`scrollPageIntoView: "${U[1].name}" is not a valid destination type.`);return}if(F||(e&&e!==this._currentScale?this.currentScaleValue=e:this._currentScale===gi&&(this.currentScaleValue=kT)),e==="page-fit"&&!U[4]){b(this,PW,Ts).call(this,t);return}const M=[t.viewport.convertToViewportPoint(c,W),t.viewport.convertToViewportPoint(c+Q,W+a)];let J=Math.min(M[0][0],M[1][0]),T=Math.min(M[0][1],M[1][1]);Z||(J=Math.max(J,0),T=Math.max(T,0)),b(this,PW,Ts).call(this,t,{left:J,top:T})}_updateLocation(l){const U=this._currentScale,Z=this._currentScaleValue,F=parseFloat(Z)===U?Math.round(U*1e4)/100:Z,t=l.id,c=this._pages[t-1],W=this.container,Q=c.getPagePoint(W.scrollLeft-l.x,W.scrollTop-l.y),a=Math.round(Q[0]),n=Math.round(Q[1]);let s=`#page=${t}`;this.isInPresentationMode||(s+=`&zoom=${F},${a},${n}`),this._location={pageNumber:t,scale:F,top:n,left:a,rotation:this._pagesRotation,pdfOpenParams:s}}update(){const l=this._getVisiblePages(),U=l.views,Z=U.length;if(Z===0)return;const F=Math.max(Ge,2*Z+1);V(this,MF).resize(F,l.ids),this.renderingQueue.renderHighestPriority(l);const t=this._spreadMode===Al.NONE&&(this._scrollMode===$.PAGE||this._scrollMode===$.VERTICAL),c=this._currentPageNumber;let W=!1;for(const Q of U){if(Q.percent<100)break;if(Q.id===c&&t){W=!0;break}}this._setCurrentPageNumber(W?c:U[0].id),this._updateLocation(l.first),this.eventBus.dispatch("updateviewarea",{source:this,location:this._location})}containsElement(l){return this.container.contains(l)}focus(){this.container.focus()}get _isContainerRtl(){return getComputedStyle(this.container).direction==="rtl"}get isInPresentationMode(){return this.presentationModeState===J0.FULLSCREEN}get isChangingPresentationMode(){return this.presentationModeState===J0.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 l=this._scrollMode===$.PAGE?V(this,X0).pages:this._pages,U=this._scrollMode===$.HORIZONTAL,Z=U&&this._isContainerRtl;return CT({scrollEl:this.container,views:l,sortByVisibility:!0,horizontal:U,rtl:Z})}cleanup(){for(const l of this._pages)l.renderingState!==Rl.FINISHED&&l.reset()}_cancelRendering(){for(const l of this._pages)l.cancelRendering()}forceRendering(l){const U=l||this._getVisiblePages(),Z=b(this,lb,gM).call(this,U),F=this._spreadMode!==Al.NONE&&this._scrollMode!==$.HORIZONTAL,t=this.renderingQueue.getHighestPriority(U,this._pages,Z,F);return t?(b(this,$h,OM).call(this,t).then(()=>{this.renderingQueue.renderView(t)}),!0):!1}get hasEqualPageSizes(){const l=this._pages[0];for(let U=1,Z=this._pages.length;U<Z;++U){const F=this._pages[U];if(F.width!==l.width||F.height!==l.height)return!1}return!0}getPagesOverview(){let l;return this._pages.map(U=>{const Z=U.pdfPage.getViewport({scale:1}),F=nM(Z);if(l===void 0)l=F;else if(this.enablePrintAutoRotate&&F!==l)return{width:Z.height,height:Z.width,rotation:(Z.rotation-90)%360};return{width:Z.width,height:Z.height,rotation:Z.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(l){if(!(l instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${l}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=l,this.refresh(!1,{optionalContentConfigPromise:l}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:l}))}get scrollMode(){return this._scrollMode}set scrollMode(l){if(this._scrollMode!==l){if(!xT(l))throw new Error(`Invalid scroll mode: ${l}`);this.pagesCount>BQ.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=l,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:l}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(l=null){const U=this._scrollMode,Z=this.viewer;Z.classList.toggle("scrollHorizontal",U===$.HORIZONTAL),Z.classList.toggle("scrollWrapped",U===$.WRAPPED),!(!this.pdfDocument||!l)&&(U===$.PAGE?b(this,s0,HW).call(this):this._previousScrollMode===$.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&b(this,od,RZ).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(l,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(l){if(this._spreadMode!==l){if(!rT(l))throw new Error(`Invalid spread mode: ${l}`);this._spreadMode=l,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:l}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(l=null){if(!this.pdfDocument)return;const U=this.viewer,Z=this._pages;if(this._scrollMode===$.PAGE)b(this,s0,HW).call(this);else if(U.textContent="",this._spreadMode===Al.NONE)for(const F of this._pages)U.append(F.div);else{const F=this._spreadMode-1;let t=null;for(let c=0,W=Z.length;c<W;++c)t===null?(t=document.createElement("div"),t.className="spread",U.append(t)):c%2===F&&(t=t.cloneNode(!1),U.append(t)),t.append(Z[c].div)}l&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&b(this,od,RZ).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(l,!0),this.update())}_getPageAdvance(l,U=!1){switch(this._scrollMode){case $.WRAPPED:{const{views:Z}=this._getVisiblePages(),F=new Map;for(const{id:t,y:c,percent:W,widthPercent:Q}of Z){if(W===0||Q<100)continue;let a=F.get(c);a||F.set(c,a||(a=[])),a.push(t)}for(const t of F.values()){const c=t.indexOf(l);if(c===-1)continue;const W=t.length;if(W===1)break;if(U)for(let Q=c-1,a=0;Q>=a;Q--){const n=t[Q],s=t[Q+1]-1;if(n<s)return l-s}else for(let Q=c+1,a=W;Q<a;Q++){const n=t[Q],s=t[Q-1]+1;if(n>s)return s-l}if(U){const Q=t[0];if(Q<l)return l-Q+1}else{const Q=t[W-1];if(Q>l)return Q-l+1}break}break}case $.HORIZONTAL:break;case $.PAGE:case $.VERTICAL:{if(this._spreadMode===Al.NONE)break;const Z=this._spreadMode-1;if(U&&l%2!==Z||!U&&l%2===Z)break;const{views:F}=this._getVisiblePages(),t=U?l-1:l+1;for(const{id:c,percent:W,widthPercent:Q}of F)if(c===t){if(W>0&&Q===100)return 2;break}break}}return 1}nextPage(){const l=this._currentPageNumber,U=this.pagesCount;if(l>=U)return!1;const Z=this._getPageAdvance(l,!1)||1;return this.currentPageNumber=Math.min(l+Z,U),!0}previousPage(){const l=this._currentPageNumber;if(l<=1)return!1;const U=this._getPageAdvance(l,!0)||1;return this.currentPageNumber=Math.max(l-U,1),!0}updateScale({drawingDelay:l,scaleFactor:U=null,steps:Z=null,origin:F}){if(Z===null&&U===null)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let t=this._currentScale;if(U>0&&U!==1)t=Math.round(t*U*100)/100;else if(Z){const c=Z>0?Em:1/Em,W=Z>0?Math.ceil:Math.floor;Z=Math.abs(Z);do t=W((t*c).toFixed(2)*10)/10;while(--Z>0)}t=Math.max(LT,Math.min(zT,t)),b(this,od,RZ).call(this,t,{noScroll:!1,drawingDelay:l,origin:F})}increaseScale(l={}){var U;this.updateScale(jU(Nl({},l),{steps:(U=l.steps)!=null?U:1}))}decreaseScale(l={}){var U;this.updateScale(jU(Nl({},l),{steps:-((U=l.steps)!=null?U:1)}))}get containerTopLeft(){return V(this,gW)||m(this,gW,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return V(this,UU)?V(this,iZ):BZ.DISABLE}set annotationEditorMode({mode:l,editId:U=null,isFromKeyboard:Z=!1}){if(!V(this,UU))throw new Error("The AnnotationEditor is not enabled.");if(V(this,iZ)!==l){if(!Te(l))throw new Error(`Invalid AnnotationEditor mode: ${l}`);this.pdfDocument&&(m(this,iZ,l),this.eventBus.dispatch("annotationeditormodechanged",{source:this,mode:l}),V(this,UU).updateMode(l,U,Z))}}set annotationEditorParams({type:l,value:U}){if(!V(this,UU))throw new Error("The AnnotationEditor is not enabled.");V(this,UU).updateParams(l,U)}refresh(l=!1,U=Object.create(null)){if(this.pdfDocument){for(const Z of this._pages)Z.update(U);V(this,DF)!==null&&(clearTimeout(V(this,DF)),m(this,DF,null)),l||this.update()}}}MF=new WeakMap,Yn=new WeakMap,pn=new WeakMap,iZ=new WeakMap,UU=new WeakMap,S0=new WeakMap,gW=new WeakMap,Bn=new WeakMap,un=new WeakMap,on=new WeakMap,gt=new WeakMap,yn=new WeakMap,sW=new WeakMap,YF=new WeakMap,KW=new WeakMap,kn=new WeakMap,iW=new WeakMap,X0=new WeakMap,DF=new WeakMap,vW=new WeakMap,Hh=new WeakSet,xM=function(d){const l={annotationEditorMode:V(this,iZ),annotationMode:V(this,S0),textLayerMode:V(this,vW)};return d&&(!d.includes(XQ.COPY)&&V(this,vW)===cd.ENABLE&&(l.textLayerMode=cd.ENABLE_PERMISSIONS),d.includes(XQ.MODIFY_CONTENTS)||(l.annotationEditorMode=BZ.DISABLE),!d.includes(XQ.MODIFY_ANNOTATIONS)&&!d.includes(XQ.FILL_INTERACTIVE_FORMS)&&V(this,S0)===xd.ENABLE_FORMS&&(l.annotationMode=xd.ENABLE)),l},Ph=new WeakSet,rM=function(d){return D(this,null,function*(){if(document.visibilityState==="hidden"||!this.container.offsetParent||this._getVisiblePages().views.length===0)return;const l=Promise.withResolvers();function U(){document.visibilityState==="hidden"&&l.resolve()}document.addEventListener("visibilitychange",U,{signal:d}),yield Promise.race([this._onePageRenderedCapability.promise,l.promise]),document.removeEventListener("visibilitychange",U)})},fh=new WeakSet,jM=function(d,l){const U=document.getSelection(),{focusNode:Z,anchorNode:F}=U;if(F&&Z&&U.containsNode(V(this,YF))){if(V(this,sW)||d===cd.ENABLE_PERMISSIONS){l.preventDefault(),l.stopPropagation();return}m(this,sW,!0);const{classList:t}=this.viewer;t.add("copyAll");const c=new AbortController;window.addEventListener("keydown",W=>m(this,KW,W.key==="Escape"),{signal:c.signal}),this.getAllText().then(W=>D(this,null,function*(){W!==null&&(yield navigator.clipboard.writeText(W))})).catch(W=>{console.warn(`Something goes wrong when extracting the text: ${W.message}`)}).finally(()=>{m(this,sW,!1),m(this,KW,!1),c.abort(),t.remove("copyAll")}),l.preventDefault(),l.stopPropagation()}},s0=new WeakSet,HW=function(){if(this._scrollMode!==$.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const d=this._currentPageNumber,l=V(this,X0),U=this.viewer;if(U.textContent="",l.pages.length=0,this._spreadMode===Al.NONE&&!this.isInPresentationMode){const Z=this._pages[d-1];U.append(Z.div),l.pages.push(Z)}else{const Z=new Set,F=this._spreadMode-1;F===-1?Z.add(d-1):d%2!==F?(Z.add(d-1),Z.add(d)):(Z.add(d-2),Z.add(d-1));const t=document.createElement("div");if(t.className="spread",this.isInPresentationMode){const c=document.createElement("div");c.className="dummyPage",t.append(c)}for(const c of Z){const W=this._pages[c];W&&(t.append(W.div),l.pages.push(W))}U.append(t)}l.scrollDown=d>=l.previousPageNumber,l.previousPageNumber=d},PW=new WeakSet,Ts=function(d,l=null){const{div:U,id:Z}=d;if(this._currentPageNumber!==Z&&this._setCurrentPageNumber(Z),this._scrollMode===$.PAGE&&(b(this,s0,HW).call(this),this.update()),!l&&!this.isInPresentationMode){const F=U.offsetLeft+U.clientLeft,t=F+U.clientWidth,{scrollLeft:c,clientWidth:W}=this.container;(this._scrollMode===$.HORIZONTAL||F<c||t>c+W)&&(l={left:0,top:0})}QM(U,l),!this._currentScaleValue&&this._location&&(this._location=null)},Ah=new WeakSet,Se=function(d){return d===this._currentScale||Math.abs(d-this._currentScale)<1e-15},Ln=new WeakSet,aR=function(d,l,{noScroll:U=!1,preset:Z=!1,drawingDelay:F=-1,origin:t=null}){if(this._currentScaleValue=l.toString(),b(this,Ah,Se).call(this,d)){Z&&this.eventBus.dispatch("scalechanging",{source:this,scale:d,presetValue:l});return}this.viewer.style.setProperty("--scale-factor",d*wd.PDF_TO_CSS_UNITS);const c=F>=0&&F<1e3;this.refresh(!0,{scale:d,drawingDelay:c?F:-1}),c&&m(this,DF,setTimeout(()=>{m(this,DF,null),this.refresh()},F));const W=this._currentScale;if(this._currentScale=d,!U){let Q=this._currentPageNumber,a;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(Q=this._location.pageNumber,a=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:Q,destArray:a,allowNegativeOffset:!0}),Array.isArray(t)){const n=d/W-1,[s,R]=this.containerTopLeft;this.container.scrollLeft+=(t[0]-R)*n,this.container.scrollTop+=(t[1]-s)*n}}this.eventBus.dispatch("scalechanging",{source:this,scale:d,presetValue:Z?l:void 0}),this.defaultRenderingQueue&&this.update()},_h=new WeakSet,Xe=function(){return this._spreadMode!==Al.NONE&&this._scrollMode!==$.HORIZONTAL?2:1},od=new WeakSet,RZ=function(d,l){let U=parseFloat(d);if(U>0)l.preset=!1,b(this,Ln,aR).call(this,U,d,l);else{const Z=this._pages[this._currentPageNumber-1];if(!Z)return;let F=WM,t=VM;this.isInPresentationMode?(F=t=4,this._spreadMode!==Al.NONE&&(F*=2)):this.removePageBorders?F=t=0:this._scrollMode===$.HORIZONTAL&&([F,t]=[t,F]);const c=(this.container.clientWidth-F)/Z.width*Z.scale/V(this,_h,Xe),W=(this.container.clientHeight-t)/Z.height*Z.scale;switch(d){case"page-actual":U=1;break;case"page-width":U=c;break;case"page-height":U=W;break;case"page-fit":U=Math.min(c,W);break;case"auto":const Q=nM(Z)?c:Math.min(W,c);U=Math.min(DT,Q);break;default:console.error(`#setScale: "${d}" is an unknown zoom value.`);return}l.preset=!0,b(this,Ln,aR).call(this,U,d,l)}},zn=new WeakSet,qh=function(){const d=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&b(this,od,RZ).call(this,this._currentScaleValue,{noScroll:!0}),b(this,PW,Ts).call(this,d)},$h=new WeakSet,OM=function(d){return D(this,null,function*(){if(d.pdfPage)return d.pdfPage;try{const l=yield this.pdfDocument.getPage(d.id);return d.pdfPage||d.setPdfPage(l),l}catch(l){return console.error("Unable to get page for page view",l),null}})},lb=new WeakSet,gM=function(d){var l,U;if(((l=d.first)==null?void 0:l.id)===1)return!0;if(((U=d.last)==null?void 0:U.id)===this.pagesCount)return!1;switch(this._scrollMode){case $.PAGE:return V(this,X0).scrollDown;case $.HORIZONTAL:return this.scroll.right}return this.scroll.down},Ss=new WeakSet,Ub=function(d=this.container.clientHeight){d!==V(this,kn)&&(m(this,kn,d),jT.setProperty("--viewer-container-height",`${d}px`))},db=new WeakSet,KM=function(d){for(const l of d)if(l.target===this.container){b(this,Ss,Ub).call(this,Math.floor(l.borderBoxSize[0].blockSize)),m(this,gW,null);break}};class jX extends vM{_resetView(){super._resetView(),this._scrollMode=$.PAGE,this._spreadMode=Al.NONE}set scrollMode(l){}_updateScrollMode(){}set spreadMode(l){}_updateSpreadMode(){}}il.AnnotationLayerBuilder;il.DownloadManager;il.EventBus;il.FindState;il.GenericL10n;il.LinkTarget;il.PDFFindController;il.PDFHistory;var OX=il.PDFLinkService;il.PDFPageView;il.PDFScriptingManager;il.PDFSinglePageViewer;il.PDFViewer;il.ProgressBar;il.RenderingStates;il.ScrollMode;il.SimpleLinkService;il.SpreadMode;il.StructTreeLayerBuilder;il.TextLayerBuilder;il.XfaLayerBuilder;il.parseQueryString;const gX=["id"],KX=["id"],vX=NW("canvas",null,null,-1),HX={key:0,class:"textLayer"},PX={key:1,class:"annotationLayer"},HM=ue({__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(d,{expose:l,emit:U}){const Z=d,F=In([]),t=_Z([]),c=In(null);let W=null;const{doc:Q}=tM({onError:J=>{F.value=[],U("loading-failed",J)},onPasswordRequest({callback:J,isWrongPassword:T}){U("password-requested",{callback:J,isWrongPassword:T})},onProgress:J=>{U("progress",J)},source:UJ(Z,"source")}),a=dJ(()=>{if(!Q.value||!Z.annotationLayer)return null;const J=new OX;return J.setDocument(Q.value),J.setViewer({scrollPageIntoView:({pageNumber:T})=>{U("internal-link-clicked",T)}}),J}),n=J=>D(this,null,function*(){var S;if(!Q.value)return;const T=yield Q.value.getData(),G=yield Q.value.getMetadata(),Y=(S=J!=null?J:G.contentDispositionFilename)!=null?S:"";yT(T,Y)}),s=J=>{var Y;let T,G;return Z.height&&!Z.width?(G=Z.height,T=G/J):(T=(Y=Z.width)!=null?Y:c.value.clientWidth,G=T*J),[T,G]},R=(J=300,T="",G=!1)=>D(this,null,function*(){var Y,S,X;if(!Q.value)return;const B=J/72,k=96/72;let p,o,y;try{p=window.document.createElement("div"),p.style.display="none",window.document.body.appendChild(p),o=yield oT(p);const I=Z.page&&!G?[Z.page]:[...Array(Q.value.numPages+1).keys()].slice(1);yield Promise.all(I.map((E,O)=>D(this,null,function*(){const r=yield Q.value.getPage(E),u=r.getViewport({scale:1,rotation:0});if(O===0){const Ql=u.width*B/k,Ml=u.height*B/k;uT(o,Ql,Ml)}const w=window.document.createElement("canvas");w.width=u.width*B,w.height=u.height*B,p.appendChild(w);const _=w.cloneNode();o.contentWindow.document.body.appendChild(_),yield r.render({canvasContext:w.getContext("2d"),intent:"print",transform:[B,0,0,B,0,0],viewport:u}).promise,_.getContext("2d").drawImage(w,0,0)}))),T&&(y=window.document.title,window.document.title=T),(Y=o.contentWindow)==null||Y.focus(),(S=o.contentWindow)==null||S.print()}finally{y&&(window.document.title=y),Oi(p),(X=p.parentNode)==null||X.removeChild(p)}}),N=()=>D(this,null,function*(){if(!(!Q.value||W!=null&&W.isAborted))try{F.value=Z.page?[Z.page]:[...Array(Q.value.numPages+1).keys()].slice(1),t.value=Array(F.value.length).fill(1),yield Promise.all(F.value.map((J,T)=>D(this,null,function*(){const G=yield Q.value.getPage(J);if(W!=null&&W.isAborted)return;const Y=((Z.rotation%90===0?Z.rotation:0)+G.rotate)%360,[S,X,B]=Array.from(c.value.getElementsByClassName("vue-pdf-embed__page")[T].children),k=!!(Y/90%2),p=G.view[2]-G.view[0],o=G.view[3]-G.view[1],[y,I]=s(k?p/o:o/p),E=`${Math.floor(y)}px`,O=`${Math.floor(I)}px`,r=y/(k?o:p),u=G.getViewport({scale:r,rotation:Y});t.value[T]=r,S.style.display="block",S.style.width=E,S.style.height=O;const w=[h(G,u.clone({scale:u.scale*window.devicePixelRatio*Z.scale}),S)];return Z.textLayer&&w.push(M(G,u.clone({dontFlip:!0}),X)),Z.annotationLayer&&w.push(e(G,u.clone({dontFlip:!0}),B||X)),Promise.all(w)}))),W!=null&&W.isAborted||U("rendered")}catch(J){F.value=[],t.value=[],W!=null&&W.isAborted||U("rendering-failed",J)}}),h=(J,T,G)=>D(this,null,function*(){G.width=T.width,G.height=T.height,yield J.render({canvasContext:G.getContext("2d"),viewport:T}).promise}),e=(J,T,G)=>D(this,null,function*(){Dm(G),new ST({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:G,page:J,viewport:T}).render({annotations:yield J.getAnnotations(),div:G,imageResourcesPath:Z.imageResourcesPath,linkService:a.value,page:J,renderForms:!1,viewport:T})}),M=(J,T,G)=>D(this,null,function*(){Dm(G),new YT({container:G,textContentSource:yield J.getTextContent(),viewport:T}).render()});return nR(Q,J=>{J&&U("loaded",J)},{immediate:!0}),nR(()=>[Q.value,Z.annotationLayer,Z.height,Z.imageResourcesPath,Z.page,Z.rotation,Z.scale,Z.textLayer,Z.width],T=>D(this,[T],function*([J]){J&&(W&&(W.isAborted=!0,yield W.promise),Oi(c.value),W={isAborted:!1,promise:N()},yield W.promise,W=null)}),{immediate:!0}),Be(()=>{Oi(c.value)}),l({doc:Q,download:n,print:R}),(J,T)=>(kd(),NZ("div",{id:J.id,ref_key:"root",ref:c,class:"vue-pdf-embed"},[(kd(!0),NZ(ZJ,null,FJ(F.value,(G,Y)=>(kd(),NZ("div",{key:G},[Xb(J.$slots,"before-page",{page:G}),NW("div",{id:J.id&&`${J.id}-${G}`,class:"vue-pdf-embed__page",style:tJ({"--scale-factor":t.value[Y],position:"relative"})},[vX,J.textLayer?(kd(),NZ("div",HX)):Yb("",!0),J.annotationLayer?(kd(),NZ("div",PX)):Yb("",!0)],12,KX),Xb(J.$slots,"after-page",{page:G})]))),128))],8,gX))}});window!=null&&window.Vue&&(window.VuePdfEmbed=HM,window.useVuePdfEmbed=tM);ji!=null&&ji.workerSrc||(ji.workerSrc=BT);const fX={},sc=Object.freeze(Object.defineProperty({__proto__:null,default:fX},Symbol.toStringTag,{value:"Module"}));var ic={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},AX=/([astvzqmhlc])([^astvzqmhlc]*)/gi,_X=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function qX(d){const l=d.match(_X);return l?l.map(Number):[]}function PM(d){const l=[],U=String(d).trim();return U[0]!=="M"&&U[0]!=="m"||U.replace(AX,(Z,F,t)=>{const c=qX(t);let W=F.toLowerCase(),Q=F;if(W==="m"&&c.length>2&&(l.push([Q,...c.splice(0,2)]),W="l",Q=Q==="m"?"l":"L"),c.length<ic[W])return"";for(l.push([Q,...c.splice(0,ic[W])]);c.length>=ic[W]&&c.length&&ic[W];)l.push([Q,...c.splice(0,ic[W])]);return""}),l}function Ye(d,l){const U=d.x*Math.cos(l)-d.y*Math.sin(l),Z=d.y*Math.cos(l)+d.x*Math.sin(l);d.x=U,d.y=Z}function $X(d,l,U){d.x+=l,d.y+=U}function pe(d,l){d.x*=l,d.y*=l}var Dn=class Zb{constructor(l){this.commands=[],l&&l instanceof Zb?this.commands.push(...l.commands):l&&(this.commands=PM(l))}addPath(l){l&&l instanceof Zb&&this.commands.push(...l.commands)}moveTo(l,U){this.commands.push(["M",l,U])}lineTo(l,U){this.commands.push(["L",l,U])}arc(l,U,Z,F,t,c){this.commands.push(["AC",l,U,Z,F,t,!!c])}arcTo(l,U,Z,F,t){this.commands.push(["AT",l,U,Z,F,t])}ellipse(l,U,Z,F,t,c,W,Q){this.commands.push(["E",l,U,Z,F,t,c,W,!!Q])}closePath(){this.commands.push(["Z"])}bezierCurveTo(l,U,Z,F,t,c){this.commands.push(["C",l,U,Z,F,t,c])}quadraticCurveTo(l,U,Z,F){this.commands.push(["Q",l,U,Z,F])}rect(l,U,Z,F){this.commands.push(["R",l,U,Z,F])}roundRect(l,U,Z,F,t){typeof t>"u"?this.commands.push(["RR",l,U,Z,F,0]):this.commands.push(["RR",l,U,Z,F,t])}};function RW(d,l){let U=0,Z=0,F,t,c,W,Q,a,n,s,R,N,h,e,M,J,T,G,Y,S,X,B,k,p=null,o=null,y=null,I=null,E=null,O=null;d.beginPath();for(let r=0;r<l.length;++r){S=l[r][0],S!=="S"&&S!=="s"&&S!=="C"&&S!=="c"&&(p=null,o=null),S!=="T"&&S!=="t"&&S!=="Q"&&S!=="q"&&(y=null,I=null);let u;switch(S){case"m":case"M":u=l[r],S==="m"?(U+=u[1],Z+=u[2]):(U=u[1],Z=u[2]),(S==="M"||!E)&&(E={x:U,y:Z}),d.moveTo(U,Z);break;case"l":u=l[r],U+=u[1],Z+=u[2],d.lineTo(U,Z);break;case"L":u=l[r],U=u[1],Z=u[2],d.lineTo(U,Z);break;case"H":u=l[r],U=u[1],d.lineTo(U,Z);break;case"h":u=l[r],U+=u[1],d.lineTo(U,Z);break;case"V":u=l[r],Z=u[1],d.lineTo(U,Z);break;case"v":u=l[r],Z+=u[1],d.lineTo(U,Z);break;case"a":case"A":if(u=l[r],O===null)throw new Error("This should never happen");S==="a"?(U+=u[6],Z+=u[7]):(U=u[6],Z=u[7]),J=u[1],T=u[2],n=u[3]*Math.PI/180,c=!!u[4],W=!!u[5],Q={x:U,y:Z},a={x:(O.x-Q.x)/2,y:(O.y-Q.y)/2},Ye(a,-n),s=a.x*a.x/(J*J)+a.y*a.y/(T*T),s>1&&(s=Math.sqrt(s),J*=s,T*=s),X={x:J*a.y/T,y:-(T*a.x)/J},R=J*J*T*T,N=J*J*a.y*a.y+T*T*a.x*a.x,W!==c?pe(X,Math.sqrt((R-N)/N)||0):pe(X,-Math.sqrt((R-N)/N)||0),t=Math.atan2((a.y-X.y)/T,(a.x-X.x)/J),F=Math.atan2(-(a.y+X.y)/T,-(a.x+X.x)/J),Ye(X,n),$X(X,(Q.x+O.x)/2,(Q.y+O.y)/2),d.save(),d.translate(X.x,X.y),d.rotate(n),d.scale(J,T),d.arc(0,0,1,t,F,!W),d.restore();break;case"C":u=l[r],p=u[3],o=u[4],U=u[5],Z=u[6],d.bezierCurveTo(u[1],u[2],p,o,U,Z);break;case"c":u=l[r],d.bezierCurveTo(u[1]+U,u[2]+Z,u[3]+U,u[4]+Z,u[5]+U,u[6]+Z),p=u[3]+U,o=u[4]+Z,U+=u[5],Z+=u[6];break;case"S":u=l[r],(p===null||o===null)&&(p=U,o=Z),d.bezierCurveTo(2*U-p,2*Z-o,u[1],u[2],u[3],u[4]),p=u[1],o=u[2],U=u[3],Z=u[4];break;case"s":u=l[r],(p===null||o===null)&&(p=U,o=Z),d.bezierCurveTo(2*U-p,2*Z-o,u[1]+U,u[2]+Z,u[3]+U,u[4]+Z),p=u[1]+U,o=u[2]+Z,U+=u[3],Z+=u[4];break;case"Q":u=l[r],y=u[1],I=u[2],U=u[3],Z=u[4],d.quadraticCurveTo(y,I,U,Z);break;case"q":u=l[r],y=u[1]+U,I=u[2]+Z,U+=u[3],Z+=u[4],d.quadraticCurveTo(y,I,U,Z);break;case"T":u=l[r],(y===null||I===null)&&(y=U,I=Z),y=2*U-y,I=2*Z-I,U=u[1],Z=u[2],d.quadraticCurveTo(y,I,U,Z);break;case"t":u=l[r],(y===null||I===null)&&(y=U,I=Z),y=2*U-y,I=2*Z-I,U+=u[1],Z+=u[2],d.quadraticCurveTo(y,I,U,Z);break;case"z":case"Z":E&&(U=E.x,Z=E.y),E=null,d.closePath();break;case"AC":u=l[r],U=u[1],Z=u[2],M=u[3],t=u[4],F=u[5],B=u[6],d.arc(U,Z,M,t,F,B);break;case"AT":u=l[r],h=u[1],e=u[2],U=u[3],Z=u[4],M=u[5],d.arcTo(h,e,U,Z,M);break;case"E":u=l[r],U=u[1],Z=u[2],J=u[3],T=u[4],n=u[5],t=u[6],F=u[7],B=u[8],d.save(),d.translate(U,Z),d.rotate(n),d.scale(J,T),d.arc(0,0,1,t,F,B),d.restore();break;case"R":u=l[r],U=u[1],Z=u[2],G=u[3],Y=u[4],E={x:U,y:Z},d.rect(U,Z,G,Y);break;case"RR":u=l[r],U=u[1],Z=u[2],G=u[3],Y=u[4],k=u[5],E={x:U,y:Z},d.roundRect(U,Z,G,Y,k);break;default:throw new Error(`Invalid path command: ${S}`)}O?(O.x=U,O.y=Z):O={x:U,y:Z}}}function bb(d,l,U,Z,F=0){if(typeof F=="number"&&(F=[F]),Array.isArray(F)){if(F.length===0||F.length>4)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': ${F.length} radii provided. Between one and four radii are necessary.`);F.forEach(n=>{if(n<0)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${n} is negative.`)})}else return;if(F.length===1&&F[0]===0){this.rect(d,l,U,Z);return}const t=Math.min(U,Z)/2,c=Math.min(t,F[0]);let W=c,Q=c,a=c;F.length===2&&(W=Math.min(t,F[1]),a=W),F.length===3&&(W=Math.min(t,F[1]),a=W,Q=Math.min(t,F[2])),F.length===4&&(W=Math.min(t,F[1]),Q=Math.min(t,F[2]),a=Math.min(t,F[3])),this.moveTo(d,l+Z-a),this.arcTo(d,l,d+c,l,c),this.arcTo(d+U,l,d+U,l+W,W),this.arcTo(d+U,l+Z,d+U-Q,l+Z,Q),this.arcTo(d,l+Z,d,l+Z-a,a),this.moveTo(d,l)}function lY(d){if(!d)return;const l=d.prototype.clip,U=d.prototype.fill,Z=d.prototype.stroke,F=d.prototype.isPointInPath;d.prototype.clip=function(...t){if(t[0]instanceof Dn){const W=t[0],Q=t[1]||"nonzero";return RW(this,W.commands),l.apply(this,[Q])}const c=t[0]||"nonzero";return l.apply(this,[c])},d.prototype.fill=function(...t){if(t[0]instanceof Dn){const W=t[0],Q=t[1]||"nonzero";return RW(this,W.commands),U.apply(this,[Q])}const c=t[0]||"nonzero";return U.apply(this,[c])},d.prototype.stroke=function(t){t&&RW(this,t.commands),Z.apply(this)},d.prototype.isPointInPath=function(...t){if(t[0]instanceof Dn){const c=t[0],W=t[1],Q=t[2],a=t[3]||"nonzero";return RW(this,c.commands),F.apply(this,[W,Q,a])}return F.apply(this,t)}}function UY(d){d&&!d.prototype.roundRect&&(d.prototype.roundRect=bb)}function dY(d){d&&!d.prototype.roundRect&&(d.prototype.roundRect=bb)}const ZY=Object.freeze(Object.defineProperty({__proto__:null,Path2D:Dn,applyPath2DToCanvasRenderingContext:lY,applyRoundRectToCanvasRenderingContext2D:UY,applyRoundRectToPath2D:dY,buildPath:RW,parsePath:PM,roundRect:bb},Symbol.toStringTag,{value:"Module"})),FY={class:"font-medium"},tY=["element-loading-text"],cY={class:"flex justify-between items-center h-9"},WY={key:0,class:"font-medium ml-1.25 text-xl"},VY={key:1},QY={class:"w-[170px] flex-bc"},aY="https://xiaoxian521.github.io/hyperlink/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf",rY=ue({name:"Pdf",__name:"pdf",setup(d){const{t:l}=cJ(),U=_Z(),Z=_Z(1),F=_Z(!0),t=_Z(1),c=_Z(0),W=_Z(!1),Q=[0,90,180,270],a=()=>{F.value=!1,Z.value=U.value.doc.numPages},n=()=>{t.value=W.value?null:1},s=()=>{U.value.print()};return(R,N)=>{const h=OF("el-link"),e=OF("el-pagination"),M=OF("el-checkbox"),J=OF("IconifyIconOnline"),T=OF("el-scrollbar"),G=OF("el-card"),Y=pb("tippy"),S=pb("loading");return kd(),WJ(G,{shadow:"never"},{header:DZ(()=>[NW("div",FY,[gd(h,{href:"https://github.com/hrynko/vue-pdf-embed",target:"_blank",style:{margin:"0 5px 4px 0","font-size":"16px"}},{default:DZ(()=>N[3]||(N[3]=[WV(" PDF预览 ")])),_:1})]),gd(h,{class:"mt-2",href:"https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/pdf.vue",target:"_blank"},{default:DZ(()=>N[4]||(N[4]=[WV(" 代码位置 src/views/able/pdf.vue ")])),_:1})]),default:DZ(()=>[rs((kd(),NZ("div",{class:"h-[calc(100vh-295px)]","element-loading-text":Bb(l)("status.pureLoad")},[NW("div",cY,[W.value?(kd(),NZ("div",WY," 共"+js(Z.value)+"页 ",1)):(kd(),NZ("div",VY,[gd(e,{"current-page":t.value,"onUpdate:currentPage":N[0]||(N[0]=X=>t.value=X),background:"",layout:"prev, slot, next","page-size":1,total:Z.value},{default:DZ(()=>[WV(js(t.value)+" / "+js(Z.value),1)]),_:1},8,["current-page","total"])])),NW("div",QY,[gd(M,{modelValue:W.value,"onUpdate:modelValue":N[1]||(N[1]=X=>W.value=X),onChange:n},{default:DZ(()=>N[5]||(N[5]=[WV(" 显示所有页面 ")])),_:1},8,["modelValue"]),rs(gd(J,{icon:"ic:baseline-rotate-90-degrees-ccw",class:"cursor-pointer outline-transparent",onClick:N[2]||(N[2]=X=>c.value===3?c.value=0:c.value+=1)},null,512),[[Y,{maxWidth:"none",content:`翻转(当前角度${Q[c.value]}度)`}]]),rs(gd(J,{icon:"ri:printer-line",class:"cursor-pointer outline-transparent",onClick:s},null,512),[[Y,{maxWidth:"none",content:"打印"}]])])]),gd(T,null,{default:DZ(()=>[gd(Bb(HM),{ref_key:"pdfRef",ref:U,class:"h-full container overflow-auto",rotation:Q[c.value],page:t.value,source:aY,onRendered:a},null,8,["rotation","page"])]),_:1})],8,tY)),[[S,F.value]])]),_:1})}}});export{rY as default};
|